[디자인패턴] 데코레이터 패턴(Decorator pattern)

2016. 11. 21. 16:02프로그래밍/디자인패턴

    목차

데코레이터 패턴(Decorator pattern)


주어진 상황 및 용도에 따라 어떤 객체에 책임을 덧붙이는 패턴

기능 확장이 필요할 때 서브클래싱 대신 쓸 수 있는 유연한 대안이 될 수 있다


  작성형식



  내용


특징

  • 데코레이터의 부모클래스는 자신이 장식하고 있는 객체의 부모클래스와 같으며, 한 객체를 여러 개의 데코레이터로 감쌀 수 있다. 
  • 데코레이터는 자신이 감싸고 있는 객체와 같은 부모클래스를 가지고 있기 때문에 원래 객체가 들어갈 자리에 데코레이터 객체를 집어넣어도 상관 없다.
  • 데코레이터는 자신이 장식하고 있는 객체에게 어떤 행동을 위임하는 것 외에 원하는 추가적인 작업을 수행할 수 있고 객체는 언제든지 감쌀 수 있기 때문에 실행에 필요한 데코레이터를 마음대로 적용할 수 있다.

[펌]http://skmagic.tistory.com/entry/Decoration-%ED%8C%A8%ED%84%B4


Component interface



Decorator class


ConcreteDecorator class


실행 코드


데코레이터 패턴 정의에 적었듯이 이 패턴은 베이스가 되는 Decorator class를 작성 후 거기에 다른 기능을 하는 더해 가는 형식에 패턴인거 같다. 피자를 만든다고 했을경우 기본이 되는 도우 위에 소스와 치즈를 뿌리고 그 위에 피자에 해당하는 토핑을 뿌리듯이 상황에 맞는 행동을 할 수 있도록 코드를 좀더 유연하게 작성할 수 있을것 같다.

 

  참조

https://ko.wikipedia.org/wiki/%EB%8D%B0%EC%BD%94%EB%A0%88%EC%9D%B4%ED%84%B0_%ED%8C%A8%ED%84%B4

http://skmagic.tistory.com/entry/Decoration-%ED%8C%A8%ED%84%B4