본문 바로가기

Programming/Design Pattern

Decorator Pattern

1. 정의

 1) 객체에 추가적인 책임(기능)을 동적으로 부여한다.

 2) decorator는 서브클래싱(상속)을 사용하지 않아도 유연하고 융통성 있는 기능 확장을 가능하게 한다.

 

2. 문제

 1) 조금씩 기능을 추가하기 위해 새로운 클래스를 생성하는 경우 상속으로 문제를 풀면 너무 많은 상속 관계가

    발생할 수 있음.

 2) 예를 들어 커피에 대해서 "휘핑", "사이즈 업", "샷 추가"라는 기능이 있을 때, 기능을 추가할 때마다

    기능을 추가한 상속 클래스를 만들면 상속 관계가 너무 복잡해진다.

 

3. 해결방안

 1) 상속을 사용하지 않고 연관으로 필요한 기능 추가

 

4. 사용 예제

 1) 커피에 옵션을 추가하는 경우

 2) 자바 I/O

 

Decorator Pattern의 Class Diagram

* ConcreteDecorator는 멤버로 Component 객체를 가지고 있어야 한다.

'Programming > Design Pattern' 카테고리의 다른 글

Factory Pattern  (0) 2019.12.27
Decorator Pattern 과제  (0) 2019.12.27
Observer Pattern 과제  (0) 2019.12.27
Observer Pattern  (0) 2019.12.27
Strategy Pattern 과제  (0) 2019.12.26