디자인 패턴 3강. Decorator 패턴

기타/[고급객체지향 프로그래밍]

2019. 10. 21. 13:52

 

[데코레이터 패턴]

: 객체에 추가적인 책임을 동적으로 부여한다.

: 조금씩 기능을 추가하기 위해 새로운 클래스를 생성하는 경우 상속으로 할시 너무 많은 상속관계 발생

 

 

 

[데코레이터 패턴 기본 구조]

: 데코레이터 구성요소들이 상속 받는 구조로 되어있지만, 이는 그저 형식 맞춰주기 위한 용도

: 실제로 데코레이터 안에서 받는 상위 클래스 객체를 이용한다.

 

 

 

[데코레이터 패턴 예시]

# 예시 1. 스타버즈 커피

더보기

: 여기서 Beverage 클래스와 CondimentDecorator 클래스를 abstract로 구현했지만, 이건 사용자 재량

- Beverage 클래스 : 통합 형식 제공 추상 클래스

- Espresso 클래스 : 중점되는 요소에 대한 클래스중 하나

- CondimentDecorator 클래스 : 데코레이터 관리용 추상 클래스

- Mocha 클래스 : 데코레이터 요소 클래스중 하나

- StarbuzzCoffee : Main 클래스

# 예시 2 - 공공 정보 디스플레이

더보기

- LoadHudDisplay 클래스 : txt파일 한줄씩 읽어 리스트에 저장해, 다 읽으면 리스트를 내보낸다.

- Display 클래스 : Component 클래스 역할 - 형식 제공

- HudDisplay 클래스 : 중점되는 요소 클래스

- DisplayDecorator 크래스 : 데코레이터 관리(받는) 추상 클래스

- WeatherDisplay 클래스 : 데코레이터 요소 있는 클래스중 하나

#예시3 - 문자열 주변 장식

더보기

: 원래는 데코레이터 요소 클래스에서 display 받아서 사용하지만, 여기선 데코레이터 관리 추상 클래스에서 display 받아 하위로 넘겨주는(super형태)방식을 사용했다.