C++을 처음 접할 때가 생각난다. 캡슐화, 상속, 다형성만 알면 OOP에 대해 될거 같았다. 아니었다. 이것들을 이용해서 어떻게 ‘잘’ 디자인할지를 훈련해야 했는데 못했다. 오랜기간 회사에서 개발자로 지냈지만, 그 때 못한 훈련이 계속 내 발목을 잡았고, 후회가 되었다. 그래서 뒤늦게 나마 디자인 패턴을 공부중이다. 나이를 먹어서인지, 경험적인 내용들은 머리에 들어오는데, 이론적인 얘기들은 휘리릭 빠져나간다. 그래서 경험적인 야매…
[태그:] design pattern
Design pattern: Singleton
singleton 패턴은 인스턴스가 단 하나만 존재해야할 때 사용한다. 관련예는 쉽게 찾아볼 수 있다. preference를 다루는 경우 그 자체가 global 성격을 가지기 때문에 쓸 수 있다. 게임개발에선 audio manager같은경우, 오디오 입출력을 단일화 하기위해 사용한다. 모바일기기의 HW 제어같은 경우 물리적으로 하나만 존재하기 때문에, singleton사용이 이상적이다. 사용방법은 좀 다르지만 안드로이드 공용자원인 시스템 서비스들 (LocationManager, NotificationManger, ConnectivityManager, LayoutInflater 등)의…
Design Pattern: Chain of Responsibility
Chain of Responsibility는 핸들러를 가진 객체가 요청을 받으면 자신이 처리할 요청인지 확인 후, 맞다면 처리하고 아니라면 다음 객체에게 전달한다. 전달받은 객체도 동일한 핸들러 인터페이스를 갖고 있으며, 전달받은 요청을 확인 후 마찬가지로 처리한다. 이렇게 핸들러들이 체인처럼 엮여서 마치 필터를 거치듯 필요한 객체까지 전달되어 처리되는 방식이 Chain of Responsibility Pattern이다. 이 패턴을 사용하는 곳은 아주 흔하게 보이는데,…
Design Pattern: Template Method
디자인 패턴 공부하면서 제일 중요하게 생각하고 있는 점이 실제 사용예이다. 제일 엿같은점이 커피머신이니, 스파게티니, 공구상점이니 이딴 개같은 예제들을 끌어와 설명하고 있는 부분이라서. 아니, 반복해서 마주치는 문제를 OOP로 설계하는 보편적인 방법들을 설명하면서 어떻게 실사용예 없이 그럴수가 있지? 그냥 오픈소스라도 좀 끌어와서 설명해야하는거 아니냐. Template Method도 실제 예가 없으면 그냥 가상클래스 상속받아 사용하는 generalization이 전부다. 의미부여가 안된다고….