반응형
Decorator Pattern


디자인 카탈로그에는 ...
 - 주어진 상황 및 용도에 따라 어떤 객체에 책임을 덧붙이는 패턴으로, 기능 확장이 필요할 때 서브클래싱 대신 쓸 수 있는 유연한 대안이 될 수 있습니다.
디자인 패턴 영역 - 구조 및 객체 패턴.
디자인 패턴 관계도 - (composite -> adding responsibilities to objects)

의도 - 객체에 동적으로 새로운 책임을 추가할 수 있게 합니다. 기능을 추가하려면, 서브클래스를 생성하는 것보다 융통성 있는  방법을 제공합니다.
* 데코레이터 패턴에서는 객체에 추가적인 요건을 동적으로 첨가한다.
데코레이터는 서브클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공한다.(상속을 이용해 타입을 맞춘다.)

동기 - 정적인 상속이 아니라 동적인 상황에서 필요할 때-! 객체에 책임을 부여(추가/삭제)하고 싶을 때 사용합니다. 

활용
1. 동적으로 또한 투명하게 다른 객체에 영향을 주지 않고 개개의 객체에 새로운 책임을 추가하기 위해 사용합니다.
2. 제거될 수 있는 책임에 대해 사용합니다.
3. 상속으로 서브클래스를 생성하는 방법이 실질적이지 못할 때 사용합니다.

결과
이익1. 단순한 상속보다 설계의 융통성을 더 많이 증대시킬 수 있습니다.
이익2. 클래스 계통의 상부측 클래스에 많은 기능이 누적되는 상황을 피할 수 있습니다.
부담1. 장식자와 해당 그 장식자의 구성요소가 동일한 것은 아닙니다.
부담2. 장식자를 사용함으로써 작은 규모의 객체들이 많이 생깁니다. 이 때 객체들을 잘 이해하지 못하고 있다면 시스템을 수정하는 과정이 복잡해 진다.

* OCP 를 만족시키는 패턴. 클래스는 확장에 대해서는 열려 있지만 변경에 대해서는 닫혀 있어야 한다.





반응형

+ Recent posts