본문 바로가기
지식/디자인패턴

Head First Design Patterns : Decorator Pattern

by CodeRain 2023. 12. 20.

Decorator Pattern

  • 객체들을 새로운 행동들을 포함한 특수 래퍼 객체들 내에 넣어서 행동들을 해당 객체들에 연결시키는 디자인 패턴.
  • 기능 확장이 필요할 때 서브클래싱 대신 쓸 수 있는 유연한 대안
  • 다른 인스턴스의 동작에 영향을 주지 않고 동적으로 개별 객체 에 동작을 추가

 

구조

  • Component와 그 객체를 감쌀 Decorator 객체가 존재
  • Decorator 객체 안에 Component를 구성.

장점

  1. sub class를 만들지 않고 객체의 행동을 확장.
  2. 런타임에 객체들에게 책임을 추가하거나 제거
  3. 여러 종류의 Decorator를 이용하여 여러가지 행동을 합성

 

단점

  1. 여러 Decorator 사용 시 특정 Decorator만 제거 하기 어려움
  2. 순서에 의존 하지 않는 방식으로 구현이 어려움.
  3. 초기화 코드가 읽기 힘들 수 있음.

 

  • 자바 IO Stream

 

참조