본문 바로가기
Effective JAVA 2판

Effective JAVA Item16 - Decorator Pattern

by BroBroBro 2015. 6. 5.

16에서 언급이 되었던 Decorator Pattern을 한번 살펴보려고 한다.

장식자는 장식자고 책에서 말하는 포장 클래스(Wrapper class)?

O 잘보이나? 아래 예제를 보면 왼쪽은 그냥 확장(Implements)를 하고있다.  이것을 오른쪽처럼 만들어보겠다. (물론 UML과  +operation()등이 다름은 그냥 넘어가주자...)



 


ChainCoffeeImpl Class가 IMainCoffee를 포장(구성,내포,데코레잇)하고 있다. 


즉 IMainCoffee type인 기존의 MainCoffeeImpl을 ChainCoffeeImpl이 생성자에서 인자로받아서 Decorator할수있게된것이다. 

ChainCoffeeImpl을 상속하고 있는 Chain9FloorCoffee에다가 Decorator해야하지 않을까? 

 @Override public String whiping(){

    return "("+super.whiping()+")";

 }

이런식으로? ^^

부모인 ChainCoffeeImpl은 데코레잇하기 전단계라고 보면된다. 즉 기존의 MainCoffeeImpl의 기능을 그대로 제현해주고있는?^^


아...암튼 이걸로 Decorator을 알았다고 생각하련다...나중에 또까먹겠지만...