데코레이터 패턴(Decorator Pattern)으로 객체에 추가 요소를 동적으로 더할 수 있습니다. 데코레이터를 사용하면 서브클래스를 만들 때보다 훨씬 유연하게 기능을 확장할 수 있습니다.
각 구성 요소는 직접 쓰일 수도 있고 데코레이터에 감싸여 쓰일 수도 있습니다.
각 데코레이터 안에는 Component 객체가 들어있습니다. 즉, 데코레이터에는 구성 요소의 레퍼런스를 포함한 인스턴스 변수가 있습니다.
Decorator는 자신이 장식할 구성 요소와 같은 인터페이스 또는 추상 클래스를 구현합니다.
Decorator는 Component의 상태를 확장할 수 있습니다.