본문 바로가기
이론/디자인패턴

[디자인패턴] 데코레이터 패턴 Decorator Pattern

by 6161990 2021. 6. 6.

📌 Decorator pattern

기존 뼈대(클래스)는 유지하되, 이후 필요한 형태로 꾸밀 때 사용한다. 

확장이 필요한 경우 상속의 대안으로도 활용한다. 

SOLOD 중에서 개방폐쇄 원칙(OCP)과 의존 역전 원칙(DIP)를 따른다. 

에스프레소에 추가되는 우유, 물, 시럽 처럼 

떤걸 첨가하냐에 따라서 다른 무엇이 되는 원리와 비슷하다. 

이 예로 알아보기 

https://github.com/6161990/TIL/blob/main/DesignPattern/Decorator%20Pattern.md

 

 

Audi의 모델들을 예로 들어보자

 

Audi가 구현할 ICar 인터페이스

 

 

ICar를 구현한 Audi 클래스

 

 

Main

 

ICar 인터페이스를 만들고 Audi가 그것을 구현하고 

Main에서 돌려보면

 

다음과 같은 결과가 나온다. 

 

 

 

여기에서 Audi 모델들을 다양하게 추가해보자면,

우선 데코레이터 클래스를 만들어야 한다. 

Audi를 다양하게 구현하는 데코레이터 클래스

 

데코레이터 클래스 또한 ICar를 구현한다.

17 getPrice() 메소드에는 Audi 기본가격에 해당 모델 가격을 더한 값을 return하도록 한다.

 

 

 

AudiDecorator를 상속받은 A3

 

 

AudiDecorator를 상속받은 A4

 

 

 

Main 클래스

 

 

 


기본 뼈대는 변하지않고
거기에 부가적인 첨부(getPrice())를 함으로써 결과가 다양하게 나타남.