Decorator Pattern 실전

Design Patterns 2011. 10. 10. 01:46
반응형
데코레이터 패턴 :
객체에 추가 요소를 동적으로 더 할수 있다.
데코레이터를 사용하면 서브 클래스를 만드는 경우에 비해 훨씬 유연하게 기능을 확장할수 있다.

객체 지향의 원칙 :
1. 바뀌는 부분은 캡슐화 한다.
2. 상속보다는 구성을 활용한다.
3. 구현이 아닌 인터페이스에 맞춰서 프로그래밍 한다.
4. 서로 상호작용을 하는 개체 사이에서는 가능하면 느슨하게 결합하는 디자인을 사용한다.
5. 클래스는 확장에 대해서는 열려 있지만 변경에 대해서는 닫혀 있어야 한다. (OCP)



GOF 데코레이션 패턴 UML



스타버즈 커피전문점 음료 UML



클래스 구성 :
Beverage - 추상 클래스
CondimentDecorator - 추상 클래스 (Beverage를 상속)
Moca - 구현 클래스 (Beverage 래퍼 클래스)


추상 래퍼 클래스는 래핑할 추상 클래스를 상속 받는다.


래퍼 구현 클래스를 추상 래퍼 클래스를 상속 받는다.


이전 워밍업 포스팅에서와 같은 결과를 가지지만 전혀 다르다.
두들스타버즈에서는 메이커에서 만들어지는 객체의 가격과 설명이 원래 음료 클래스의 속성을 변화 시키지만
데코레이션 패턴을 사용하게 되면 원래 음료 클래스의 속성을 유지한채 래퍼 클래스의 속성을 변화 시키므로 느슨한 결합을 하게 되며 보다 변화에 유연하게 대처 할수 있게 되었다.


반응형

'Design Patterns ' 카테고리의 다른 글

[Design Pattern] abstract factory pattern  (0) 2020.11.09
Proxy Pattern (구조패턴 : 프록시패턴)  (0) 2019.02.28
Decorator Pattern 워밍업  (0) 2011.10.10
Observer Pattern in Java Convert to AS3  (0) 2011.10.09
Strategy Pattern  (0) 2011.10.09
: