Design Pattern(11)
-
Decorator Pattern ③ 적용 및 정리
일단은 데코레이터 패턴에 대한 정의는 이렇습니다. 테코레이터 패턴에서는 객체에 추가적인 요건을 동적으로 첨가한다. 데코레이터는 서브클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공한다. -_-; 당췌 뭐라고 하는건지 알수가 없네요.. 역시나 말로 하는것보다는 그림으로 보면서 이해하는편이 훨씬 빠를것 같다는 생각이 듭니다. 뭔가 정의 내리는 건 책에서도 처음부터 하고 있지 않는걸 보니 정의는 언제나 그럴싸 하기때문에 온갖 어려운 미사여구로 장식되어 있기 때문에 와닿지 않는 것 같네요. 그럼 멋진말 다 뒤집어 엎고 이해하기 위해서.. 다른방법으로 접근을 합시다! 인터넷을 통해서 아래와 같은 다이어그램을 구할 수 있었습니다. 이것이 데코레이터 패턴의 일종의 모형이라고 볼수가 있는데요. ..
2007.02.12 -
Decorator Pattern ① 문제점의 시작
데코레이터 패턴 공부를 하면서, 영화표를 파는 걸 한번 만들어 보자.. 생각했습니다. 일단 클래스를 만들어 봤는데요.. 개괄적인 클래스의 모습이 이러했습니다. 'ㅅ' ㅋㅋ 아주 간단합니다. 그냥 연령별로 티켓을 만들어 주면되구요.. 가격이라던가, 어떤 연령대의 티켓인지만 알수 있으면 되죠.. 굉장히 간단하구나.. 생각했는데 하나 의문점이 들었습니다. 보통 영화관에서는 카드로 할인을 해주는데.. 이런 할인 서비스를 구현하기 위해서는 어떻게 해야될까?? 생각했습니다. 또, 이런 할인이 중복되어서 할인이 되는 경우를 생각해봤습니다. -_-;; 4가지의 형태(일반, 청소년, 경로, 아이) 의 티켓 요금이 존재하고, 또 할인되는 경우가 3가지 라면.... 머릿속이 복잡합니다.. 계산을 해보니 약 32개의 클래스가..
2007.02.12 -
Observer Pattern ① 개요
지난번 Strategy Pattern에서는 상속과 구현을 이용한 클래스 설계 후에 그것을 리팩토링 하면서 해나가면서 배우는 디자인 패턴이었다면, 이번에는 다른 방법으로 접근을 해보겠습니다. 먼저 Observer Pattern을 간단하게 그림과 함께 알아보도록 하겠습니다. 유후군 잇힝리라는 마을이 있다고 가정을 합시다. 잇힝리에 사는 현씨네 큰 아들이 장가를 간다고 이장님이 이 동네사는 현아네, 윤주네, 범석이네 식구들에게 방송으로 이 경사스러운 소식을 알렸습니다. 그렇지만 잇힝리에 살지 않는 한산이네까지는 방송이 되지 않았습니다. 옵저버 패턴은 이와 같이 동네 이장님이 동네 사람들에게 어떤 소식을 알리는 것과 같은 것을 비유해서 알고 있으면 기억하기가 쉽습니다. 보통 유식한 말로 이렇게 이야기 합니다. ..
2007.02.06 -
Strategy Pattern ③ 정리
책에서는 세가지의 디자인 원칙을 내세우면서 궁극적으로 Strategy Pattern으로 가기 위한 로드맵을 제공합니다. ① 애플리케이션에서 달라지는 부분을 찾아내고, 달라지지 않는 부분으로부터 분리시킨다. ② 구현이 아닌 인터페이스에 맞춰서 프로그래밍한다. ③ 상속보다는 구성을 활용한다. ① 애플리케이션에서 달라지는 부분을 찾아내고, 달라지지 않는 부분으로부터 분리시킨다. attack(), move(), stop().. 등의 바뀌는 부분을 분리시켜서 따로 만들어 준것 기억하시죠? 그것들을 행동 별로 나누어서 또 세분화 시켜준 것을 의미합니다. ② 구현이 아닌 인터페이스에 맞춰서 프로그래밍한다. 이전에 있던 Attackable과 같은 인터페이스는 Terran을 상속받는 구체적인 유닛 클래스가 구체적으로 구..
2007.02.02 -
Programming by Intending
테스트위주의 개발 : 의도된 프로그래밍 2005년 2월 4일, Dave Astels에 의해 쓰여짐, 챕터의 예제는 courtesy of Prentice Hall PTR가 제공했다. 부분적인 코드에 대해서 작업을 하고 또 그것에 대해 이해하는 것이 어렵다는것을 발견한 적이 있습니까? 아마 로직이 뒤죽박죽 일겁니다, 식별자들은 의미가 없거나 아니면 더 심각하게는 혼동될 수 있을 겁니다. 문서가 있다구요? 해석이 가능했습니까? 이해가 가던가요? 코드까지 설명했나요? 정말인가요? 어떻게 알수 있습니까? 이 챕터에서는 XP에서 중요한 요소인 의도된 프로그래밍에 대해서 다룰것입니다, 그것은 당신이 코딩을 할때에 당신의 의도를 명확하게 만드는 것을 의미합니다. O, be some other name! —Romeo a..
2006.12.22