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을 알았다고 생각하련다...나중에 또까먹겠지만...
'Effective JAVA 2판' 카테고리의 다른 글
Effecitve JAVAItem20 태그 달린 클래스 대신 클래스 계층을 활용하라 (0) | 2015.06.30 |
---|---|
Effective JAVA Item19 인터페이스는 자료형을 정의할 때만 사용하라 (0) | 2015.06.30 |
Effective JAVA Item16 계승하는 대신 구성하라 (0) | 2015.06.05 |
Effective JAVA Item15 변경 기능성을 최소화 하라 - 실습 및 동료클래스 (0) | 2015.05.17 |
Effective JAVA Item15 변경 가능성을 최소화 하라 (0) | 2015.05.09 |