일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- conda
- ngui
- 쉘
- List
- dataframe
- Shader
- mysql
- Unity
- null
- FIND
- python
- pandas
- sqlite
- with
- boost
- SVN
- 배열
- DROP
- c++11
- pi
- if
- ubuntu
- SSH
- sql
- awk
- autovacuum
- Eclipse
- expect
- C++
- postgresql
Archives
- Today
- Total
その先にあるもの…
Decorator 본문
출처 : http://warmz.tistory.com/757
- 데코레이터 패턴은 객체의 추가적인 요건을 동적으로 추가한다.
- 데코레이터는 서브 클래스를 만드는 것을 통해서 기능을 유연하게 확장할 수 있는 방법을 제공한다.
- 한 객체를 여러 개의 데코레이터로 감쌀 수 있다.
- 기존 코드를 수정하지 않고도 행동을 확장할 수 있다.
단점
- 데코레이터 패턴을 이용해 디자인을 하다 보면 잡다한 클래스가 많아 질 수 있다.
- 겹겹이 애워싼 객체의 정체를 알기가 힘들다.
- 상속을 통해 확장할 수도 있지만, 디자인 유연성 면에서는 별로 좋지 않다.
Decorator UML
커피의 종류에 따라 서브 클래스가 많이 생성된다.
음료의 종류가 늘어 날 수록 부모 클래스의 변수와 함수가 증가하게 된다.
decorator 적용 UML
커피의 종류와 커피에 추가되는 첨가물을 분리
작동 원리
의문점
추가 되는 패턴중 삭제를 할 수 있는가?
여러개로 첨가된 클래스 중 한개를 삭제하기는 어려울것 같다. ( 삭제하기 위한 클래스에 붙은 클래스를 알아내는 것도 객체지향적이지 못한듯. )
마지막으로 첨가된 객체 삭제 방법 : http://forums.oreilly.com/topic/20910-decorator-pattern-removing-decorator-from-the-decorated-object/
Comments