[데코레이터 패턴]
: 객체에 추가적인 책임을 동적으로 부여한다.
: 조금씩 기능을 추가하기 위해 새로운 클래스를 생성하는 경우 상속으로 할시 너무 많은 상속관계 발생
[데코레이터 패턴 기본 구조]
: 데코레이터 구성요소들이 상속 받는 구조로 되어있지만, 이는 그저 형식 맞춰주기 위한 용도
: 실제로 데코레이터 안에서 받는 상위 클래스 객체를 이용한다.
[데코레이터 패턴 예시]
# 예시 1. 스타버즈 커피
: 여기서 Beverage 클래스와 CondimentDecorator 클래스를 abstract로 구현했지만, 이건 사용자 재량
- Beverage 클래스 : 통합 형식 제공 추상 클래스
- Espresso 클래스 : 중점되는 요소에 대한 클래스중 하나
- CondimentDecorator 클래스 : 데코레이터 관리용 추상 클래스
- Mocha 클래스 : 데코레이터 요소 클래스중 하나
- StarbuzzCoffee : Main 클래스
# 예시 2 - 공공 정보 디스플레이
- LoadHudDisplay 클래스 : txt파일 한줄씩 읽어 리스트에 저장해, 다 읽으면 리스트를 내보낸다.
- Display 클래스 : Component 클래스 역할 - 형식 제공
- HudDisplay 클래스 : 중점되는 요소 클래스
- DisplayDecorator 크래스 : 데코레이터 관리(받는) 추상 클래스
- WeatherDisplay 클래스 : 데코레이터 요소 있는 클래스중 하나
#예시3 - 문자열 주변 장식
: 원래는 데코레이터 요소 클래스에서 display 받아서 사용하지만, 여기선 데코레이터 관리 추상 클래스에서 display 받아 하위로 넘겨주는(super형태)방식을 사용했다.
'기타 > [고급객체지향 프로그래밍]' 카테고리의 다른 글
디자인 패턴 6강. 커맨드 패턴(Command Pattern) (0) | 2019.12.10 |
---|---|
디자인 패턴 5강. 싱글턴 패턴(Singleton Pattern) (0) | 2019.12.06 |
디자인 패턴 4강. 팩토리 패턴(Factory pattern) (0) | 2019.12.02 |
디자인 패턴 2강. Observer 패턴 (0) | 2019.10.20 |
디자인 패턴 1강. Strategy 패턴 (0) | 2019.10.18 |