디자인 패턴 중에서 데코레이터(Decorator)에 대해서 알아보자. 데코레이터 패턴은 GoF가 제시한 구조 패턴(Structural Pattern) 중의 하나로 어떤 한 클래스의 인스턴스 동작을 변경하지 않고, 새로운 인스턴스에 동작을 다이나믹하게 추가하는 패턴이다. 데코레이터 패턴은 기능이 확장될 때 서브클래싱(subclassing)의 대안으로 사용할 수 있다. 그리고 데코레이터 패턴은 객체지향 5대 원칙(SOLID) 중 OCP(Open-Close Principle)에 해당한다. OCP는 확장에는 개방되고, 변경에는 폐쇄한다는 원칙인데, 이는 변경을 위한 비용은 가능한 줄이고, 확장을 위한 비용은 가능한 극대화해야 한다는 의미이다. 즉, 기존의 소프트웨어를 쉽게 확장해서 재사용할 수 있어야 한다는 것..