디자인 패턴 - 데코레이터 패턴(Decorator Pattern)
디자인 패턴이란?
디자인 패턴이란? 게시글을 참고하자.
생성(Creational) 패턴 | 구조(Structural) 패턴 | 행동(Behavioral) 패턴 |
---|---|---|
Singleton | Adapter | Command |
Abstract Factory | Composite | Interpreter |
Factory Method | Decorator | Iterator |
Builder | Facade | Mediator |
Prototype | Flyweight | Memento |
Proxy | Observer | |
State | ||
Strategy | ||
Template Method |
데코레이터 패턴
데코레이터 패턴이란 객체의 결합을 통해 기능을 동적으로 유연하게 확장할 수 있게 해주는 패턴을 말한다. 즉, 기본 기능에 추가해야하는 기능의 종류가 많을 경우에 각 추가 기능을 Decorator 클래스로 정의 한 후에 필요한 Decorator 객체를 조합함으로써 추가 기능의 조합을 설계하는 방식이다.
구성 요소
데코레이터 패턴은 Component, ConcreteComponent, Decorator, ConcreteDecoratorA … 으로 구성되어 있으며, 각 역할이 수행하는 작업은
- Component 기본 기능을 뜻하는 ConcreteComponent와 추가 기능ㅇ르 뜻하는 Decorator의 공통 기능을 정의한다.
- ConcreteComponent 기본 기능을 구현한다.
- Decorator 많은 수가 존재하는 구체적인 Decorator의 공통 기능을 제공한다.
- ConcreteDecoratorA ~ … Decorator의 하위 클래스로 기본 기능에 추가되는 개별적인 기능들을 뜻한다.
장점과 단점
장점
- 기존 코드를 수정하지 않고 Decorator 패턴을 통해 확장시킬 수 있다.
- 구성과 위임을 통해서 실행 중 새로운 행동을 추가할 수 있다.
단점
- 의미없는 객체들이 너무 많이 추가될 수 있다.
- Decorator를 많이 사용하면 코드가 복잡해진다.
Decorator 패턴은 클래스의 요소들을 계속해서 수정하며 사용하는 경우, 여러 요소들을 조합해서 사용하는 클래스인 경우에 사용하면 효과적으로 써줄 수 있다.
댓글남기기