Basic/Design Pattern

#6 Decorator Pattern in C++ (데코레이터 패턴 C++)

VallistA2016. 3. 30. 12:02


그림 1 : 데코레이터 패턴 예시 (사진 = Dean's Blog)



데코레이터 패턴


커피를 만드는데, 우리는 어떻게 만드는가? 먼저, 카페베네 같은곳을 갔다고 하자. 카라멜 마끼아또를 시키는데 이 커피는 뭐가 들어가나 생각을 해보자.

정리를 해보면 커피, 카라멜시럽, 컵, 등등이 있을 것이다. 그러한 것들에 대해서 소스코드를 짠다고 생각해보자.


아메리카노일반컵이란 클래스가 있으면

아메라카노큰컵이란 클래스도 있을 것이고

아메리카노큰컵에프림조금 클래스도 있을 것이고.

프림 많이 넣은 클래스도 있을 것이다.


이렇게 되면 클래스가 너무 많아지기때문에 관리도 힘들다. 그러므로 우리는 생각해 낸 것이다. 커피와 동등 선상에 있는 데코레이터를 하나 만들어서 같이 가지고 있으면 되지 않냐는 생각에 말이다.



소스코드



그림 2 : 구현한 데코레이터, 부대찌개를 예로 들었다.



댓글

  • 트레이져2017.11.24 20:36 데코레이트에 대한 내용 잘보았습니다.
    현업을 종사하는 분으로 보입니다. 그러나 이 데코레이트는 사용예가 적절하지않은 듯합니다.
    굳이 가격의 값 초기화만 다르게 하기위해 데코레이트를 쓸이유는 어디에도 없습니다.
    이런 경우라면 생성자에서 그냥 가격만 다르게 변수로 받으면 될일입니다.
    이렇게 접근을 하고 싶으시다면, 재료를 변수로 취급하시는편이 훨씬 더 적절한 예일 것 입니다.
  • jelee92018.04.10 16:30 new는 여러개를 했는데, 감싸고 감싸서 최종적으로는
    *부태찌개 컴포넌트 = 만두부대찌개만 담기는데요,
    delete는 만두부대찌개만 되는것 같습니다.

    memory leak이 날것으로 생각됩니다.
댓글쓰기 폼

VallistA

병특이 끝나서 게임에서 웹으로 스위칭한 프로그래머.
프로그래밍 정보등을 공유합니다.

자고 싶습니다. ㅠㅠ

페이스북    :: 링크
카카오톡    :: kingbye1
Github      :: 링크

궁금한점 문의 주시면 답변드리도록 하겠습니다

VISITED

Today : 20

Total : 341,809

SNS

  • 페이스북아이콘
  • 카카오톡아이콘
  • 트위터아이콘