その先にあるもの…

Decorator 본문

프로그래밍/패턴

Decorator

specialJ 2014. 5. 22. 11:28

출처 : http://warmz.tistory.com/757


 - 데코레이터 패턴은 객체의 추가적인 요건을 동적으로 추가한다.

 - 데코레이터는 서브 클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공한다.

 - 한 객체를 여러 개의 데코레이터로 감쌀 수 있다.

 - 기존 코드를 수정하지 않고도 행동을 확장할 수 있다.


   단점

 - 데코레이터 패턴을 이용해 디자인을 하다 보면 잡다한 클래스가 많아 질 수 있다.

 - 겹겹이 애워싼 객체의 정체를 알기가 힘들다.

 - 상속을 통해 확장할 수도 있지만, 디자인 유연성 면에서는 별로 좋지 않다.



Decorator UML




커피의 종류에 따라 서브 클래스가 많이 생성된다.





음료의 종류가 늘어 날 수록 부모 클래스의 변수와 함수가 증가하게 된다.



decorator 적용 UML

커피의 종류와 커피에 추가되는 첨가물을 분리





작동 원리








의문점

추가 되는 패턴중 삭제를 할 수 있는가?

여러개로 첨가된 클래스 중 한개를 삭제하기는 어려울것 같다. ( 삭제하기 위한 클래스에 붙은 클래스를 알아내는 것도 객체지향적이지 못한듯. )

마지막으로 첨가된 객체 삭제 방법 : http://forums.oreilly.com/topic/20910-decorator-pattern-removing-decorator-from-the-decorated-object/






'프로그래밍 > 패턴' 카테고리의 다른 글

stragy패턴  (0) 2015.04.09
State 패턴  (0) 2015.04.07
observer  (0) 2014.04.07
Comments