ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 3. 데코레이터 패턴(Decorator Pattern)
    카테고리 없음 2020. 2. 26. 13:03

    1. Class Diagram

     

    1) 기본구조

    Decorator Pattern

    2) 실제 사용예

     

    2. Decorator Pattern?

     기본 기능에 추가할 수 있는 기능의 종류가 많은 경우에, 각 추가 기능을 Decorator 클래스로 정의한 후 필요한 Decorator 객체를 조합함으로써 추가 기능의 조합을 설계 하는 것. 즉, 기본 틀은 만들어 놓고 여러가지를 추가할 수 있도록 설계된 디자인 패턴. 

     

    3. OCP (Open-Closed Principle)

     OCP(Open-Closed Principle)는 하나의 디자인 원칙이다. 그리고 이 디자인 원칙은 Decorator Pattern을 구성하는데 있어서 중요한 역할을 한다. OCP(Open-Closed Principle) 클래스는 확장에 대해서는 열려 있어야 하지만 코드 변경에 대해서는 닫혀 있어야 한다는 것으로, 데코레이터 패턴은 OCP에 기반하여 코드를 수정하지 않으면서 코드를 확장하는게 좋다.

     

     하지만 주의할 점이 있다.

    • 무조건 OCP를 적용하는 것은 시간 낭비가 될 수 있고,
    • 복잡하고 이해하기 힘든 코드만 만들게 되는 부작용이 있을 수 있다.

    따라서, 이것을 조심하여 설계를 진행해야한다.

     

    4. 구조설명

    1) Component
     기본 기능을 뜻하는 ConcreteComponent와 추가 기능을 뜻하는 Decorator의 공통 기능을 정의하며, 클라이언트는 이 Component를 통해 실제 객체를 사용한다.

     

    2) ConcreteComponent
     위의 Component 인터페이스의 구현 클래스

     

    3) Decorator
     Decorator의 공통 기능을 제공

     

    4) ConcreteDecoratorA, ConcreteDecoratorB
     Decorator의 하위 클래스로 기본 기능에 개별 기능들을 추가 구현한다. ConcreteDecorator 클래스는 ConcreteComponent 객체에 대한 참조가 필요한데, 이는 Decorator 클래스에서 Component 클래스로의 ‘합성(composition) 관계’를 통해 표현된다.

    5. 예시 및 추가 설명

     

Designed by Tistory.