Decorator
조합된 기능이 많은 경우
Decorator 패턴은 객체의 결합을 통해 기능을 유연하게 확장할 수 있도록 도와주는 디자인 패턴입니다. 즉, 기존 객체에 새로운 기능을 동적으로 추가할 때 상속 대신 객체 조합(composition)을 활용하여 확장성을 높입니다.
이 패턴은 기능이 많거나 변화가 잦은 경우, 객체를 여러 데코레이터로 감싸서 점진적으로 기능을 추가할 수 있도록 해줍니다.
How do code?
기본 컴포넌트(Component) 공통 기능을 정의하는 인터페이스 또는 추상 클래스이며, ConcreteComponent가 이 인터페이스를 구현합니다.
추상 데코레이터(Decorator) Component 인터페이스를 구현하고, 다른 Component 객체를 필드로 가지고 있습니다. 기본적으로 Component의 operation()을 호출하며, 서브클래스에서 추가 기능을 구현할 수 있습니다.
구체적인 데코레이터(ConcreteDecoratorA, ConcreteDecoratorB) Decorator를 상속받아 추가 작업(전처리 및 후처리 등)을 구현합니다. 데코레이터는 기본 컴포넌트를 감싸며, 여러 데코레이터를 결합해 복합적인 기능을 추가할 수 있습니다.
클라이언트 코드 기본 컴포넌트를 생성하고, 원하는 데코레이터로 감싼 후 operation() 메서드를 호출하면, 데코레이터 계층 구조에 따라 추가된 기능이 모두 수행됩니다.
Last updated