August 04, 2021
객체에 추가적인 요소들을 동적으로 추가하는 디자인패턴입니다. 기본 기능을 크게 정의해놓고 추가 기능은 데코레이터 클래스로 구현합니다.
Component는 기본기능을 정의하고, ConcreteComponent 는 해당 기능을 구현합니다. Decorator에서는 Component의 객체를 가져옴으로서 정의된 기본기능을 가져오고 ConcreteDecorator는 Decorator에 있는 기본기능을 받음과 동시에 추가기능을 구현합니다.
추가된 기능과 기존 기능을 합칠때 클래스를 전부 따로 생성해야하는 상속과 달리 데코레이터 패턴은 기본기능과 추가기능을 조합하여 사용할 수 있어 유연하게 기능을 확장하기 좋습니다.
Ex)
계산로직, 결제로직 있는데 계산하고 결제하는 기능이 필요한 경우
상속 : 계산결제 클래스를 따로 생성해야함.
조합 : 계산클래스와 결제클래스를 합침.
https://gmlwjd9405.github.io/2018/07/09/decorator-pattern.html https://laughcryrepeat.tistory.com/86