이전에 Spring AOP와 Proxy를 공부해보면서 데코레이터 패턴과 프록시 패턴에 대해서 알게되었다.
관련 내용은 아래 링크에서 확인할 수 있다.
하지만 데코레이터 패턴과 프록시 패턴의 차이점이나 디자인 패턴에 대해 정확한 내용을 알지 못하여 공부해볼 겸 정리하게 되었다.
데코레이터 패턴은 기존 객체를 변경하지 않고 기능을 동적으로 추가하거나 확장할 수 있게 해주는 디자인 패턴이다.
데코레이터의 말 뜻대로 객체를 꾸며주는 역할을 한다고 생각하면 이해하기 쉽다.
아래 그림에 따라 각 요소에 대한 설명과 예제를 통해 설명해보겠다.
Component
Component
는 기능을 정의하는 인터페이스이다.
구현 객체인 ConcreteComponent
와 장식자인 Decorator
가 이를 상속받아 구현하게 된다.
public interface Food {
String name();
int price();
void order();
}