데코레이터 패턴(Decorator Pattern)은 객체의 뼈대(원본)는 그대로 둔 채, 런타임에 동적으로 객체에 새로운 책임이나 기능(장식)을 유연하게 추가할 수 있는 구조 패턴입니다.
카페에서 '에스프레소'라는 기본 커피 객체에 '물'을 감싸면 아메리카노가 되고, 거기에 다시 '우유'를 감싸면 라떼가 되는 원리입니다. 상속을 통해 `LatteCoffee`, `MochaCoffee` 클래스를 수없이 만드는 대신, 장식자(Decorator)들을 양파 껍질처럼 계속 씌우는 방식으로 결합도를 크게 낮춥니다. Java의 I/O 스트림(`BufferedReader(new FileReader(...))`)이 이 패턴의 대표적인 적용 사례입니다.
📐 Decorator Pattern UML
데코레이터 패턴은 기존 객체의 코드를 수정하지 않고 동적으로 기능을 확장(장식)할 수 있게 합니다.