객체에서 다른 객체로 request를 보낼 때, request 내용이 복잡해 지거나 확장이 필요하면, 프로토콜을 따로 설계하게된다. 그렇게 해야 보다 유연해지기 때문이다. request에 대한 프로토콜을 별도의 Command 오브젝트로 구현하는 방법이 바로 Command Pattern이다. request를 보내는 Invoker 객체는 이를 받는 Reciever 객체에 대한 정보가 없어도 되기 때문에(Command 객체가 갖고있다), 두 객체간 coupling을 제거할 수 있다. Command Pattern의 실제…
[태그:] C#
OOP: constructor and inheritance
상속과 관련해서 생성자는 어떻게 연결이 되는지 헷갈릴만한 포인트들이 있어 한 번 정리해 놓는다. Kotlin 코틀린은 생성자에 클래스이름을 쓰지않고 ‘constructor’라는 키워드를 쓴다. 여러 생성자를 가질 수 있으나, primary constructor는 클래스 첫 라인을 활용한다. ( Kotlin 공식문서 참조 ) 두번째 라인처럼 키워드를 안써줘도 된다. 또한, 세번째처럼 class property정의를 써서 추가적인 할당코드없이 간단하게 사용도 가능하다. 조금 당황스러울 수…
OOP: property
Kotlin을 보다가 backing field를 접하며, 이게 뭔가싶었는데 다른 언어들도 다 지원하는 property에 대한 내용이었다. 그동안 솔직히 member variable과 property에 대한 개념이 따로 없었음. 아… 부끄럽네. 아뭏튼 정리해보도록 한다. property는 간단히 말해, member variable에 대한 encapsulation이라고 할 수 있다. 클래스를 작성할 때, 값을 저장할 변수를 만들고 의식적으로 getter, setter를 만들어 주고 있었지만, 이를 언어 레벨에서 지원하는게…
Unity: C# 문법에서 익숙하지 않은 부분만 모아보기
C#을 한 번 훑어보면서 익숙하지 않거나 다른언어와 헷갈릴만한 부분만 추려봤다. 이런게 있다고 언급하는 선이기 때문에, 모든 정보를 얻으려 하지말고 관련 키워드를 이용해 검색해보기 바란다. foreach 대부분 다 C/C++하고 같은데, 다른 언어에서 익숙한 foreach문이 추가로 있다. 추가로 있다고 하기에 좀 민망하긴 한데, C++ 11에도 추가되어 지원하고 있는 문법이다. https://docs.microsoft.com/en-us/dotnet/csharp/language-reference/keywords/foreach-in 참조. format string Kotlin, Python에서 자주쓰던 format…
Design pattern: Singleton
singleton 패턴은 인스턴스가 단 하나만 존재해야할 때 사용한다. 관련예는 쉽게 찾아볼 수 있다. preference를 다루는 경우 그 자체가 global 성격을 가지기 때문에 쓸 수 있다. 게임개발에선 audio manager같은경우, 오디오 입출력을 단일화 하기위해 사용한다. 모바일기기의 HW 제어같은 경우 물리적으로 하나만 존재하기 때문에, singleton사용이 이상적이다. 사용방법은 좀 다르지만 안드로이드 공용자원인 시스템 서비스들 (LocationManager, NotificationManger, ConnectivityManager, LayoutInflater 등)의…