디자인 패턴/구조 패턴
Decorator 패턴
언린이
2021. 9. 7. 09:29
Decorator 패턴은 기본 객체에 추가적인 기능을 동적으로 유연하게 첨가하는 패턴입니다.
구조
- Component
- ConcreteComponent와 Decorator가 구현할 인터페이스입니다. 두 객체를 동등하게 다루기 위해 존재합니다.
- ConcreteComponent
- Decorate를 받을 객체입니다. 즉, 기능 추가를 받을 기본 객체를 의미합니다.
- Decorator
- Decorate를 할 객체의 추상 클래스입니다. 즉, 기능 추가를 할 객체는 이 객체를 상속받습니다.
- ConcreteDecorator
- Decorator를 상속받아 구현할 다양한 기능 객체입니다. 이 기능들은 ConcreteComponent에 추가되기 위해 만들어 집니다.
활용 상황
- 객체가 상황에 따라 다양한 기능이 추가되거나 삭제되어야 할때 유용합니다.
Decorator 패턴의 장단점
- 장점
- 객체에 동적으로 기능 추가를 간단하게 할 수 있습니다.
- 단점
- 자잘한 Decorator 클래스들이 계속 추가되어 클래스가 많아질 수 있습니다.
- 기능을 추가할때마다 Decorator 클래스들이 겹겹이 쌓이기 때문에 객체의 정체를 알아보기 힘들고 복잡해질 수 있습니다.