Decorator Pattern 워밍업

Design Patterns 2011. 10. 10. 01:30
반응형

요즘 커피숍이 참 많다.
커피도 다양하고 가격도 천차 만별이다.
오늘은 커피 만드는 방법에 대해 연구해 본다.

간단하게 커피는 다양한 재료들이 모여 하나의 음료가 된다.
예를들어
아메리카노 + 아이스 = 아이스 아메리카노
모카  + 우유 = 모카 라떼

뭐 정확하지는 않지만 대충 이런식으로 이름이 구별되며 첨가 되는 첨가물에 따라 가격도 달라진다.




위와 같이 엄청난 메뉴들을 만들라면 레시피와 가격이 다양할것이다.

사실 오늘 연구할 디자인 패턴은 데코레이터 패턴이긴 하지만 그전에 개인적으로 이것을 어떻게 구현할지 생각해보고 구현해보기로 한다.

UML은 다음과 같다.

Beverage는 추상 클래스이며 음료의 설명과 가격을 외부에서 접근 할수 있도록 한다.
음료에 추가 되는 것들은 ICondiment를 구현 하게 된다.
BeverageMaker를 통해 addCondiment에 추가 하고자 하는 첨가물을 넣는다.
마지막으로 get beverageList에서 각 만들어진 음료를 찾아 꺼낼수 있게 된다.


클래스 구성은 다음과 같다.



BeverageMaker를 통해 음료에 첨가물을 넣는 과정이다.





개발자의 실수로 Whip은 ICondiment를 구현 하지 않았다.
그 경우를 대비 하여 예외 처리를 해 놓았다.



몇번이고 원하는 첨가물을 추가 할수 있다. 그에 따른 가격도 다르게 책정 된다.


 



다음포스팅에서는 데코레이터 패턴을 사용해서 구현해보도록 한다.

반응형

'Design Patterns ' 카테고리의 다른 글

Proxy Pattern (구조패턴 : 프록시패턴)  (0) 2019.02.28
Decorator Pattern 실전  (0) 2011.10.10
Observer Pattern in Java Convert to AS3  (0) 2011.10.09
Strategy Pattern  (0) 2011.10.09
GOF디자인 패턴 각 행위 정리  (0) 2011.09.30
: