Java 디자인 패턴-11.Decorator
(Java 디자인 패턴 스터디 모집 중 : https://github.com/bluedskim/javaDesignPatterns)
Decorator 패턴
(출처:https://stefanhenneken.net/2019/02/16/iec-61131-3-the-decorator-pattern)
해결하려는 문제
특징/용도
- 런타임에 객체에 동적으로 기능을 추가하기 위한 structural 패턴
- 래퍼wrapper 클래스로 구현.
- chain of responsibility pattern과 유사함
- 생성자 혹은 다른 메소드에서 해당 클래스 자체를 인수로 받는 경우 데코레이터라 볼 수 있다(https://refactoring.guru/design-patterns/decorator/java/example)
고려사항
클래스 다이어그램
소스
- 꾸며질decorated 객체
- BeverageBase.java : 부모 abstract 객체
- BlackTea.java
- Espresso.java
- GreenTea.java
- 꾸미는decorator 객체
- CondimentsDecoratorBase.java : 부모 abstract 객체
- CholateCondiment.java
- MilkCondiment.java
- SugarCondiment.java
