본문 바로가기

Game Programming/C++

패턴 - 5. 데코레이터 패턴(Decorator Pattern)

5. 데코레이터 패턴(Decorator Pattern)

  - 객체를 동적(Dynamic)으로 서브 클래스를이용해서 확장한다.

  - 기본 클래스 및 해당 객체 자체에 추가적인 서브 클래스를 구성해서 생성자 파라메터로 객체를 넘겨서 원하는 기능을 표현하는 방법



 - 구현 클래스와 같은 형식의 데코레이터를 생성하고 해당 데코레이터를 구현한 다양한 서브클래스를 생성한다.

 - 구현 클래스와 타입(A)이 같으므로 덧씌울 수 있다.


※ 쉽게 생각하면 구현 되어 있는 클래스가 있고 새롭게 재정의? 구현을 다시 한다면 기존 코드를 복사한 Decorator를 생성 한 다음 서브 클래스에서 다시 재정의 해서 사용하는 방법이다.

자식 클래스?에서 다시 덮어 씌운다는 생각을 갖자


5.1 특징 및 장단점

  5.1.1 특징

    - 다양한 부가 기능들을 클래스 객체화 해서 주 객체에 씌워 유연하게 확장할수 있다.

  5.1.2 장점

    - 원래 클래스는 그대로 보존하고 거기에 덧붙이는 서브 클래스가 있는 경우 언제든지 덧씌워 사용할 수 있고 여러가지를 다양하게 꾸밀수있다.

  5.1.3 단점

    - 데코레이트 하고 난 후에는 원래 객체를 추적하기 힘들다.

    - 추상화된 타입을 이용한 객체만 사용 가능