author
postNo
status
thumbnail
description
category
tags
createdAt
updatedAt
데코레이터 패턴(Decorator Pattern)
객체에 추가적인 요소를 동적으로 추가한다. 데코레이터는 서브클래스를 만드는 것을 통해 기능을 유연하게 확장할 수 있는 패턴이다.
데코레이터 패턴을 설명할 때 가장 많은 예로 등장하는 카페 주문에 대해 살펴본다.
아메리카노를 주문하고 여러가지 재료를 첨가하는 상황이다.
우유추가
샷추가
크림추가
이와같은 모습의 코드가 될것이다.
잘 만들었다고 생각할 수 있지만, 큰 문제점이 있다.
- 데코의 종류가 추가될 때마다 슈퍼클래스를 계속 수정해야한다.
- 동일한 데코를 여러번 추가하지 못한다.
<blockquote>
디자인원칙 OCP : 클래스는 확장자에 대해서는 열려있어야 하지만 코드 변경에 대해서는 닫혀있어야 한다.
<a href="/posts/37" target="_blank">자세히보기</a>
</blockquote>
즉 기존 코드는 건드리지 말고 확장을 통해서 새로운 행동을 간단하게 추가할 수 있어야 한다.
아래의 코드를 살펴보자
이번은 데코 클래스를 만들어줍니다
마지막으로 다음과 같이 사용한다.