«   2024/04   »
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
Archives
Today
Total
04-20 00:39
관리 메뉴

lancelot.com

Head First Design Pattern - 3장 Decorator Pattern 본문

프로그래밍

Head First Design Pattern - 3장 Decorator Pattern

lancelot50 2009. 5. 3. 16:49
1. 디자인원칙
 클래스는 확장에 대해서는 열려 있어야 하지만 코드 변경에 대해서는 닫혀 있어야 한다.


스타버즈 커피숍에 여러종류의 커피들과 거기 올리는 데코레이션을 가지고 설명하고 있습니다.  예제가 적절하니 이해가 쏙쏙 잘되네요.
데코레이터 패턴은 역시 생성을 관리해주는 무엇이 있어야 겠군요.  혼자서는 쓰임이 자칫하면 스파게티 코드가 될 우려가 있어보입니다.

2. Decorator Pattern
객체에 추가적인 요건을 동적으로 첨가한다.  서브클래스를 통해 기능을 유용하게 확장하는 방법을 제공.

덧.
이거 예제 C++로 만들어보다가 const 때문에 삽질을 했네요.
같은 함수인가의 구분은 함수선언가지고 하는데요, 함수선언에는

함수명(인자...) const

뒤에 const 까지 들어갑니다. const가 있는거랑 없는거는 다른 함수라는 이야기지요(앞에 반환값은 함수선언에 들어가지 않습니다).

parent class의 함수에는 const 를 선언해놓고 child class 에서는 const를 잊어먹고 안달아놨는데, 가상함수를 실행하니 자꾸만 부모로 들어가더라구요. 
왜이럴까 왜이럴까 한참 고민하다가 보니까 const가 붙어있더라는(예제라서 대충 줄을 따닥따닥붙여썼더니 더 안보였던거같네요 ㅡㅡ; )
ㅠㅠ