본문 바로가기

Software Design Pattern

데코레이터 패턴

포장지 패턴(Decorator Pattern)

상속은 객체의 기능의 변경이 아닌 클래스의 변경이다.

=> 동적인 변경이 아닌 정적인 변경

=> 실행 시간에 기능을 변경하는 것이 불가능하다.


기능을 추가한 객체에 다시 기능을 추가할 수 있어야 한다.


데코레이터 패턴


핵심

포장지는 객체를 포함하지만 포장된 객체를 다시 포장할 수 있어야 한다.

=> 포장지와 객체는 동일 부모가 필요하다.


재귀적 합성을 통한 기능의 추가 => 데코레이터 패턴

(Composite패턴은 재귀적 합성을 통한 복합 객체의 구성)

class RightMissile implements Item {

     private Item spaceShip;

     ...

}


재귀적 합성을 사용하는 디자인 패턴 2가지

재귀적 합성을 통한 복합 객체 구성 - 컴포지트 패턴

재귀적 합성을 통한 기능의 추가 - 데코레이터 패턴


포장지의 공통의 특징을 부모로 제공하자.


///

a.zip 이라는 파일의 내용을 읽고 싶다.

방법 1. 클래스 하나로 구현한다.

방법 2. 세 개의 작은 문제로 나누어 처리한다. ( 모든 문제를 분할 정복할 수 가 있다)

1) 파일을 읽는다. - FileInputStream

2) 버퍼링을 한다. - BufferedInputStream

3) 압축을 푼다. - ZipInputStream


'Software Design Pattern' 카테고리의 다른 글

Cloneable  (0) 2017.12.06
추상 팩토리 패턴  (0) 2017.12.05
메멘토(Memento) 패턴  (0) 2017.12.03
컬랙션에 작용하는 두번째 예제  (0) 2017.12.02
반복자(Iterator) 패턴  (0) 2017.12.01