객체에 추가 요소를 동적으로 더할 수 있다.
데코레이터를 사용하면 서브클래스를 만들 때보다 유연하게 확장이 가능하다.
✅ 데코레이터의 슈퍼클래스는 자신이 장식하고 있는 객체의 슈퍼클래스와 같다.
✅ 한 객체를 여러 개의 데코레이터로 감쌀 수 있다.
✅ 데코레이터는 자신이 감싸고 있는 객체와 같은 슈퍼클래스를 가지고 있기에 원래 객체가 들어갈 자리에 데코레이터 객체를 넣어도 상관이 없다.
✅ 데코레이터는 자신이 장식하고 있는 개체에게 어떤 행동을 위임하는 일 말고도 추가 작업을 수행할 수 있다.
✅ 객체는 언제든지 감쌀 수 있으므로 실행 중에 필요한 데코레이터를 마음대로 적용할 수 있다.
OCP(Open-Closed Principle)
클래스는 확장에는 열려 있어야 하지만 변경에는 닫혀 있어야 한다

HeadFirst DesignPattern - 한빛미디어