Skip to content

Latest commit

 

History

History
29 lines (19 loc) · 1.55 KB

decorator.md

File metadata and controls

29 lines (19 loc) · 1.55 KB

데코레이터 패턴

주어진 상황 및 용도에 따라 어떤 객체에 책임(기능)을 동적으로 추가하는 패턴을 말한다.

데코레이터라는 말 그대로 장식이라고 생각하면 편하다.

기본 기능을 가지고 있는 클래스를 하나 만들어주고 추가할 수 있는 기능들을 추가하기 편하도록 설계하는 방식이다.

  • Component: 실질적인 인스턴스를 컨트롤 하는 역할
  • ConcreteComponent: Component의 실질적인 인스턴스의 부분으로 책임의 주체 역할
  • Decorator: Component와 ConcreteDecorator를 동일시 하게 해주는 역할
  • ConcreteDecorator: 실질적인 장식 인스턴스 및 정의이며 추가된 책임의 주체

데코레이터 패턴의 장단점

장점

  1. 기존 코드를 수정하지 않고도 데코레이터 패턴을 통해 행동을 확장시킬 수 있다.
  2. 구성과 위임을 통해서 실행중에 새로운 행동을 추가할 수 있다.

단점

  1. 의미없는 객체들이 너무 많이 추가될 수 있다.
  2. 데코레이터를 너무 많이 사용하면 코드가 필요 이상으로 복잡해질 수 있다.

아래와 같은 상황일 때 데코레이터 패턴 사용을 해주면 좋다.

  1. 클래스의 요소들을 계속해서 수정하면서 사용하는 구조가 필요한 경우
  2. 여러 요소들을 조합해서 사용하는 클래스 구조인 경우