데코레이터 패턴

차분한열정·2022년 1월 7일

디자인 패턴

목록 보기
6/15

런타임에 어떤 것의 동작을 바꿀 수 있음, 기존 코드의 기능을 런타임에 확장

다양한 경우에 상속을 사용해서 무수히 많은 클래스를 만들지 말고 뭔가 wrapper 클래스를 만들어서 해당 기능을 감싸고 대신 외부적으로는 원래의 기능과 같은 인터페이스를 드러내는 기법

...
Service service = basicService;

if(needFeature1) {
	service = decorator1(service)
}

if(needFeature2) {
	service = decorator2(service)
}

if(needFeature3) {
	service = decorator3(service)
}

...

이런 식으로 특정 경우에 필요한 기능들을 선물 포장지마냥 계속 추가해나갈 수 있다.

마치 어노테이션 여러 개가 달려있는 모습을 상상하면 된다..!

데코레이터 패턴은 여러 기능을 하는 괴물 클래스를 만들 필요없이 하나의 클래스는 하나의 책임만 수행하도록 한다는 장점이 있다(Single Responsibility Principle!)

profile
성장의 기쁨

0개의 댓글