ConcreteComponent에 새로운 행동을 동적으로 추가할 수 있다.
각 데코레이터 안에는 구성요소(Component)에 대한 레퍼런스가 들어있는 인스턴스 변수가 있다.
Decorator는 자신이 장식할 구성요소(Component)와 같은 인터페이스 또는 추상 클래스를 구현한다.
ConcreteDecoratorA, ConcreteDecoratorB 에는 그 객체가 장식하고 있는(데코레이터가 감싸고있는 Component객체)을 위한 인스턴스 변수가 있다. 따라서 데코레이터 Component의 상태를 확장할 수 있다.
ConcreteDecoratorA, ConcreteDecoratorB 데코레이터에서 새로운 메소드를 추가할 수도 있다. 하지만 일반적으로 새로운 메소드를 추가하는 대신 Component에 원래 있던 메소드를 호출하기 전, 또는 후에 별도의 작업을 처리하는 방식으로 새로운 기능을 추가한다.