데코레이터 패턴

P.W.J·2023년 5월 17일
0

DesignPattern

목록 보기
2/2

데코레이터 패턴(Decorator Pattern)

데코레이터 패턴은 주언진 상황 및 용도에 따라 어떤 객체에 책임(기능)을 동적으로 추가하는 패턴을 말합니다.
기본 기능을 가지고 있는 클래스를 하나 만들어주고 추가할 수 있는 기능들을 추가하기 편하도록 설계하는 방식입니다.


  • Component
    • 기본 기능을 뜻하는 ConcreteComponent와 추가 기능을 뜻하는 Decorator의 공통 기능을 정의
    • 즉, 클라이언트는 Component를 통해 실제 객체를 사용함
  • ConcreteComponent
    • 기본 기능을 구현하는 클래스
  • Decorator
    • 많은 수가 존재하는 구체적인 Decorator의 공통 기능을 제공
  • ConcreteDecoratorA, ConcreteDecoratorB
    • Decorator의 하위 클래스로 기본 기능에 추가되는 개별적인 기능을 뜻함
    • ConcreteDecorator 클래스는 ConcreteComponent 객체에 대한 참조가 필요한데, 이는 Decorator 클래스에서 Component 클래스로의 ‘합성(composition) 관계’를 통해 표현됨

장점

  • 기본 코드를 수정하지 않고도 데코레이터 패턴을 통해 행동을 확장시킬 수 있습니다.
  • 구성과 위임을 통해서 실행 중에 새로운 행동을 추가 할 수 있습니다.

단점

  • 의미없는 객체들이 너무 많이 추가될 수 있습니다.
  • 데코레이터를 너무 많이 사용하면 코드가 필요 이상으로 복잡해질 수 있습니다.

정리

  • 데코레이터 패턴은 런타임에서 유연하게 객체의 기능들을 수정하고 조합하는데 유용하게 사용하는 패턴이다. 그러나 조합해야 할 특징이 많다면 이어붙이는 데코레이트의 수까지 늘어나므로 가독성이 해치는 단점이 있습니다.
profile
Backend

0개의 댓글