데코레이터는 구조 패턴이며 새로운 행동들을 특수 래퍼 객체들 내에 넣어서 이러한 행동들을 객체들에 동적으로 추가할 수 있도록 합니다.
데코레이터를 사용하여 객체들을 제한 없이 래핑할 수 있습니다. 왜냐하면 대상 객체들과 데코레이터들은 같은 인터페이스를 따르기 때문입니다. 결과 객체는 모든 래퍼의 스태킹된 행동을 가질 것입니다.
개념적인 예시
pizza.go: 컴포넌트 인터페이스
veggieMania.go: 구상 컴포넌트
tomatoTopping.go: 구상 데코레이터
cheeseTopping.go: 구상 데코레이터
main.go: 클라이언트 코드
output.txt: 실행 결과