책 정리/Modern C++ Design
8장, 객체 팩토리(Object Factory) - 8.2 객체 팩토리 리팩토링
최익필
2010. 12. 25. 22:54
이 포스트를 남긴 목적
- 첫번째 객체 팩토리를 좀 더 개선시키기 위해서
이 포스트의 준비물
- g++, make, gvim
- firefox 4 b8
- vmplayer
참조 링크
- http://minjang.egloos.com/2255385 - object님의 switch/if 관련 댓글
- http://kldp.org/node/29999 - kldp 노드
참조 문헌
- 안드레 알렉산드레스쿠 저. Modern C++ Design. 이기형 역.
Addiston-Wesley. 인포북. 초판 2003.07.30. Chapter8 page(331 ~ 337)
내용
어디를 리팩토링 할 것인가?
- switch 문을 없애고, 함수 맵을 사용한다. - 유지보수가 어려웠던 부분을 극복하기 위해서
맛보기 코드
해석
- animal_factory 클래스에서 생성 함수 포인터를 맵의 값으로 받는다.
- 이 값을 통해 객체를 생성한다.
단점
- 유지보수가 편해지긴 했으나, 타입에 종속적이여서, 아직 라이브러리로 만들수 없다.
- 라이브러리로 만들 경우 좋으점은, 다음 개발할 때, 더 쉬워지기 때문이다.
- 싱글턴으로만 사용 해야 한다.
- 만약 여러개를 사용된다면, 어떤 팩토리는 되고 어떤 팩토리는 안되는 먹기 힘든 음식을 먹게 될 것이다.
다음 포스트에서는 이 부분을 라이브러리로 뺄 수 있게, "일반화"를 거쳐 보도록 한다.
여담
- 집 주변에 10분 정도 걸어가면, 중형 마트가 하나 있는데, 베지밀 950ml를 1700원에 판다. :)
- 2년 전에도 1700원이 였는데...
:wq