데코레이터 패턴(Decorator Pattern)은 객체에 동적으로 새로운 기능을 추가하는 패턴이다. 커피 클래스가 있다고 하자. 커피는 우유, 설탕, 얼음, 휘핑 등 다양한 재료를 추가할 수 있다. 커피가 다양한 재료를 하나씩만 추가한다면 커피를 상속받는 자식 클래스를 생성하면 된다. 그러나 우유+설탕과 같이 여러 재료를 넣는 경우를 만든다면, 재료의 양에 따라 수많은 클래스가 필요하고, 새로운 재료를 추가하기도 어렵다. 대신 Decorator 클래스를 구현하고, 클래스를 덮는 클래스를 덮는 클래스를 만드는 식으로 여러 재료를 중첩할 수 있다. 구현 데코레이터 패턴은 Component Decorator Concrete Decorator 로 구성된다. Component Component는 기본이 되는 클..