Notice
Recent Posts
Recent Comments
Link
«   2025/12   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31
Archives
Today
Total
관리 메뉴

기록하자

[디자인 패턴] Decoration Pattern 본문

카테고리 없음

[디자인 패턴] Decoration Pattern

server 2019. 4. 6. 12:31

기술 블로그를 보던 중 레거시 코드에 대해 새로운 기능 추가가 일어날때 어떻게 처리하는지를 봤다. 거기에 디자인패턴 Decoration Pattern 을 써서 한번 정리할 필요성을 느껴 정리 해본다

 

Decoration Pattern 이란 ?

기존 코드를 변경하지 않고 객체에 새로운 임무를 부여하는것이다. 이말은 자식 클래스를 만들어 기능을 유연하게 대응하기 위한 것이다.그래도 이해 안되면 예를 들어 보자!

 

요구사항이 많은 손님

예를들어 까페에 가서 손님이 아메리카노로 주세요! 라고 하면 데코레이션 패턴은 필요가 없어 보인다. 하지만 초콜렛칩 플랫치노로 주시고 휘팅크림 얹어 주시고 시럽 넣어 주시고 초코 드리즐 깔아주세요.

이 경우에는 추가 되는 기능이 많다. 이때 Decoration Pattern이 적절해 보인다.!

 

추가되는 기능이 많다 보니 아래와 같은 사진이 되버린다....

 

그러면 어떻게 대응 할까..?

 

새로운 기능이 추가 될때마다 Beverage에 새로운 기능을 넣으면된다~~

하지만! 이것도 또한 문제가 된다...그러면 Beverage의 정의가 불분명해지고 기능이 추가 될 수록 Beverage의 메소드는 점점 늘어난다... 그러면 어떻게 해야할까

 

디자인의 원칙 OCP(open-closed principle)

:클래스는 확장에 대해 열려 있어도 되지만 코드 변경에 있어서는 닫혀 있어야 된다

이말은 기존 코드를 변경하지 않고 새로운 클래스를 만들어 확장 해야 한다는 말이다.

 

위와 같은 사진으로 클래스를 확장해 나아가면서 대응하면 객체지향적으로 설계가 되었다고 말할 수 있다.