프로그래밍
심플 팩토리 패턴 (Simple Factory Pattern)
팩토리란? (Factory) => 객체 생성을 처리하는 클래스 심플 팩토리란? (Simple Factory) => 객체를 생성하는 일을 전담하는 클래스 심플 팩토리 패턴 정의 => 일반적인 팩토리 패턴은 무언가 객체를 생성하고자 할 때 사용하는 패턴 => 심플 팩토리는 사실 패턴이라기보다는 객체지향 프로그램을 할 때 사용되는 관용구 같은 것 => 하지만 팩토리 메서드 패턴이나, 추상 팩토리 패턴의 기본이므로 알아두면 좋음 => 주어진 입력을 기반으로 다른 유형의 객체를 반환하는 메소드가 있는 팩토리 클래스 이제 유니티에서 코드를 통해 패턴을 확인해보려고 한다. 유닛을 영역에 맞게 생성하고 로그로 움직임을 찍어보려고 한다. 프로젝트 구성은 아래와 같다. 먼저 Unit.cs이다. // Unit.cs usin..
스트레티지 패턴 (Strategy Pattern)
1. 스트레티지 패턴 정의 => 여러 알고리즘을 하나의 추상적인 접근점(인터페이스)을 만들어 접근점에서 알고리즘이 서로 교환 가능하도록 하는 패턴 => 동일 목적 알고리즘의 선택 적용 문제 => 인터페이스 => 기능에 대한 선언(구현과의 분리) => 여러가지 기능을 사용하기 위한 단일 통로 => 사용 예 : => 워드 문서에서 프린터, 폰트 사용 => 프린터기의 종류에 상관없이 프린트 동작, 폰트의 종류에 상관없이 입력하는건 같음 => 정수 배열에 대해 사용하는 정렬 알고리즘 => 게임 캐릭터의 무기(교체) 사용 인터페이스를 받고 해당 기능은 꼭 구현해야 한다. 와 같다. 게임에서 무기의 종류는 다양해도 (칼, 창, 단검, 도끼, 방패 등) 공격! 자체의 기능은 똑같은 것과 같다. (실제로 칼은 2번 휘..
[카카오톡 봇] 롤 랭크 검색 기능 만들기
자바스크립트를 이용한 카카오톡 봇 랭크 검색 기능이다. 사실 시작자체도 못하고 있었는데 내용을 아주 잘 정리해주신 분이 계셔 참고했다. http://blog.naver.com/PostList.nhn?blogId=dt3141592 (네이버 블로그 - Dark Tornado님) 시작 자체도 저분이 만들어주신 앱으로 시작했다. 블로그에 자세한 설명을 해주셔서 따로 적진 않고 간략하게 말하면 1. 봇을 돌릴 기계가 필요하다. (공기계 혹은 Nox와 같은 가상머신도 가능) 2. 카카오톡 계정이 필요하다. (슬랙 봇 개념과 다름) 3. 공기계 혹은 가상 머신에 안드로이드 웨어 앱과 채팅 자동응답 봇 앱 2개를 설치해야 한다. 4. 채팅 자동응답 봇에서 코드를 작성한다. 이다. 맨 처음엔 특정 단어에 반응해 대답하는..
싱글턴 패턴 (Singleton Pattern)
1. 싱글턴 패턴 정의 => 오직 한 개의 클래스 인스턴스만을 갖도록 보장하고, 이에 대한 전역적인 접근점을 제공한다. => GoF의 정의 2. 유니티에서의 싱글턴 패턴 => 같은 씬안에서의 데이터 공유 => 서로 다른 씬들간의 데이터 공유 => 씬에 빈객체를 생성한 후에 오직 하나의 객체만 생성되도록 만들고, DontDestoryOnLoad 메소드를 통해 씬 변경시에도 파괴되지 않는 형태로 구현한다. 3. 싱글턴 패턴의 장단점 => 싱글턴 패턴의 객체는 일종의 전역 변수이다. => 장점 1. 모든 곳에서 접근이 가능하다. => 단점 1. 모든 곳에서 접근 가능하니, 객체의 변경 시점과 변경 주체를 알기가 쉽지 않다. => 단점 2. 단점 1의 주체를 알려면 호출하는 모든 코드들을 다 찾아야 알 수 있다..
컴포넌트 패턴 (Component Pattern)
1. 컴포넌트 패턴 정의 서로 다른 기능은 나누어 작성하여 서로간 커플링 없이 다룰 수 있게 하는 것 => 로직을 기능별로 컴포넌트화 하는 것 2. 컴포넌트 패턴 사용 이유 using System.Collections; using System.Collections.Generic; using UnityEngine; enum MOVE { MOVE_RIGHT, MOVE_LEFT } public class AllAct : MonoBehaviour { GameObject player1; GameObject player2; MOVE move = MOVE.MOVE_RIGHT; void Start() { player1 = GameObject.Find("Player1") as GameObject; player2 = Ga..
[C#] 쓰레기 수집기 (Garbage Collector)
1. 사전 학습 using System; class Program { public static void Foo() { int n2 = 0; // 1초 후 } static void Main() { int n1 = 0; // 1시간 경과 Foo(); } } Q. 누가 더 오래 살 수 있을까? 코드를 보기 전 위의 Case를 살펴보자. Case 1의 경우 사람의 경우이다. 사고를 제외하고 객관적으로 오래 살 수 있는건 A이다. 사람은 보통의 경우 젊은 사람이 더 오래 살 것이다. Case 2의 경우 프로그램의 경우이다. 위의 1번 Case는 최근에 태어난 사람이 오래 살게 되는데 프로그램은 어떨까? 위의 코드에서 Main에서 n1을 만들고 1시간이 경과한 후 Foo가 실행 됐다고 생각해보자. Foo를 호출해도..