데코레이터 패턴
Decorator Pattern
주 객체에 추가적으로 장식이 그때그때 다르게 달린다면?
각 모든 경우의 수 클래스를 작성하면 관리도 힘들도 그 갯수가 무한대로 늘어난다.
이를 보완하는 방법으로 Decorator 패턴을 사용한다.
[참고]
http://warmz.tistory.com/757
커피를 예를 들어
주 커피의 종류(블렌딩, 에스프레소, 디카페인, 다크로스트)에 우유와 휘핑, 모카 등의 첨가가 올라가 하나의 음료가 된다.
각각의 음료를 클래스를 만들어 관리하는 것이 아니라, 주 커피에 첨가물(?)을 추가하게 한다.
최상위 클래스를 상속받은 주 커피 종류 클래스와, 최상위 클래스를 상속 받은 Decorator란 추상 객체를 생성.
Decorator를 상속받은 첨가물 클래스를 만든다.
java.io 패키지가 데코레이터 패턴을 바탕으로 만들어졌음.
* 단점 : 잡다한 클래스 들이 너무 많아 질수 있다.
--> 경우의 수만큼 클래스를 만드는 것보단 클래스 수가 작지만, 작은 기능들을 (우유, 모카 ...) 클래스를 만들어야 하기에 잡다한 클래스가 많아지는 단점이 있는듯 하다.
[참고] 인터넷 검색중 발견한 데코레이터 패턴을 이용한 티켓 계산기
http://mrtint.tistory.com/184
최상위 - 영화티켓
- 성인 티켓, 청소년 티켓, 어린이 티켓, 할머지 티켓 - 데코레이터
- 멤버쉽 카드 할인, 영화의날 할인, vip 카드 할인 ...