기초탄탄/디자인패턴

데코레이터 패턴

먕고 2014. 8. 1. 11:23

Decorator Pattern

주 객체에 추가적으로 장식이 그때그때 다르게 달린다면? 

각 모든 경우의 수 클래스를 작성하면 관리도 힘들도 그 갯수가 무한대로 늘어난다.

이를 보완하는 방법으로 Decorator 패턴을 사용한다.


[참고] 

http://warmz.tistory.com/757


커피를 예를 들어 

주 커피의 종류(블렌딩, 에스프레소, 디카페인, 다크로스트)에 우유와 휘핑, 모카 등의 첨가가 올라가 하나의 음료가 된다.

각각의 음료를 클래스를 만들어 관리하는 것이 아니라, 주 커피에 첨가물(?)을 추가하게 한다.

최상위 클래스를 상속받은 주 커피 종류 클래스와, 최상위 클래스를 상속 받은 Decorator란 추상 객체를 생성. 

Decorator를 상속받은 첨가물 클래스를 만든다.


java.io 패키지가 데코레이터 패턴을 바탕으로 만들어졌음.


* 단점 : 잡다한 클래스 들이 너무 많아 질수 있다. 

--> 경우의 수만큼 클래스를 만드는 것보단 클래스 수가 작지만, 작은 기능들을 (우유, 모카 ...) 클래스를 만들어야 하기에 잡다한 클래스가 많아지는 단점이 있는듯 하다.


[참고] 인터넷 검색중 발견한  데코레이터 패턴을 이용한 티켓 계산기

http://mrtint.tistory.com/184

최상위 - 영화티켓

          -  성인 티켓, 청소년 티켓, 어린이 티켓, 할머지 티켓             - 데코레이터

                                                                                             - 멤버쉽 카드 할인, 영화의날 할인, vip 카드 할인 ...