Decorator Pattern (데코레이터 패턴)

Decorator Pattern

 

정의

상속 또는 interface 이용하여 Type 맞춰 객체의 추가적인 요건을 동적으로 추가한다. 서브클래스(decorator class) 만드는 것을 통해서 기능을 유연하게 확장할 있는 방법을 제시한다. 중요한점은 Decorator 상속을 통해서 행동을 물려받는 것이 목적이 아니라는 것이다.

 


구성

1.    구성요소는 직접 쓰일 수도 있고 decorator 감싸져서 쓰일 있다.

2.    ConcreteComponent 새로운 행동을 동적으로 추가하게 된다.

3.    decorator 안에는 Component 객체가 들어있다.

4.    Decorator 자신이 decorate 구성요소와 같은 interface abstract class implement 한다.

5.    Decorator component 상태를 확장할 있다.

6.    ConcreteDecorator에는 Object decorate하고 있는 것을 위한 interface 변수가 있다.

7.    decorator에서 새로운 method 추가할 있다.

 

l  OCP (Open-Closed Principle) : class 확장에 대해서는 open 해야 하지만 코드 수정에 대해서는 close 해야 한다. 기존 코드는 건드리지 않은 채로 확장을 통해서 새로운 행동을 추가할 있도록 코드의 수정을 허용한다는 것으로 기능 추가에 유연하기에 튼튼한 디자인을 있다.


 

장점

1.    기존 코드를 수정하지 않고도 행동을 확장하는 방법이 된다.

2.    Composition delegate 통해서 실행 중에 새로운 행동을 추가할 있다.

3.    상속대신 decorator pattern 통해서 행동을 확장할 있다.

4.    OCP 충실하면서 유연한 디자인을 만들어 있다.

 


단점

1.    잡다한 클래스들이 많아 있다.

2.    객체가 다른 객체들로 쌓여 있을 있기 때문에 파악하기 힘들 있다.

3.    디자인 유연성 면에서는 좋지 않다.

 


구현 (Coffee 제조)


'SW > DesignPattern' 카테고리의 다른 글

Singleton Pattern (싱글턴 패턴)  (0) 2017.09.05
Factory Pattern (팩토리 패턴)  (0) 2017.09.05
Observer Pattern (옵저버 패턴)  (0) 2017.09.05
Strategy Pattern (스트레테지 패턴)  (0) 2017.09.05
DesignPattern이란? 왜쓰지?  (0) 2017.09.05