이 포스트를 남긴 목적
- 객체 팩토리란 무엇이며, 언제 필요하며, 어떻게 만들어져 있는지 정리하기 위해서
이 포스트의 준비물
- g++, make, gvim
- firefox 4 b7
- vmplayer
참조 링크
- http://iamgsi.com/entry/C++ 객체 팩토리 - 코드
- http://eyestorys.egloos.com/3544676 - 객체 팩토리
- http://iilii.egloos.com/3791596 - 자바쪽이지만, 개념은 같다.
참조 문헌
- 안드레 알렉산드레스쿠 저. Modern C++ Design. 이기형 역.
Addiston-Wesley. 인포북. 초판 2003.07.30. Chapter8 page(322 ~ 331)
내용
객체 팩토리(Object Factory)란 무엇인가?
- 객체 생성 공장(?)을 뜻한다. C++ 적으로 말하면, 여러 타입 객체를 생성할 수 있는 함수 이다.
- 디자인 패턴 중 한 패턴이다.
객체 팩토리 맛보기 코드
간단한 코드를 보고, 어떤 패턴인지 이해하자.
해석
- animal 클래스를 상속받은 dog 와 cat 클래스가 존재한다.
- animal_farm 이 객체 팩토리:object factory 라고 불리는 부분이다.
이 객체 팩토리(object factory) 언제 필요 한가?
- 자료형에 대한 정보는 있지만, C++ 에서 표현 가능한 형태가 아닌 경우
- 파일을 읽고, 객체를 생성하는 경우
- 인터넷 패킷을 받고, 객체를 생성하는 경우
- 객체 생성시 의무적으로 해야할 일이 있을 경우
이제 객체 팩토리가 무엇이고, 언제 쓰이는지 알았다. 하지만 위의 간단한 객체 팩토리 코드를 사용하다 보면, 다음과 같은 번거러움을 겪게 된다.
간단한 위의 코드로 객체 팩토리를 만들 경우, 번거러운 부분은 무엇인가?
- 라이브러리의 불가능,
- switch 문이 있는 파일에 new를 하기 위한 모든 헤더를 끌고와야 된다.
- 유지보수의 어려움
- 객체의 종류가 더 많아지거나 줄어들 경우, switch문 자체를 조심히 수정해야 한다.
(switch 문 특성상 분기타입의 변경, 분기시 할일을 수동으로 맞쳐 주어야 하므로)
다음 포스트에는 다음의 번거러운 부분을 고치는 방향으로 정리를 한다.
여담
- 몹시 추웠다. 집에 수도가 얼었다. 물을 못 구하니, 밥을 못하고, 밥을 못하니 배고프다.
:wq
'책 정리 > Modern C++ Design' 카테고리의 다른 글
8장, 객체 팩토리(Object Factory) - 8.3 객체 팩토리 - 일반화 시키기 (0) | 2010.12.26 |
---|---|
8장, 객체 팩토리(Object Factory) - 8.2 객체 팩토리 리팩토링 (0) | 2010.12.25 |
6장, 싱글턴(Singleton)의 구현 - 6.2 싱글턴 패턴을 정책 기반(policy-based) 클래스로 디자인하기 - 쓰레드 정책 추가 (1) | 2010.12.18 |
6장, 싱글턴(Singleton)의 구현 - 6.1 싱글턴 패턴을 정책 기반(policy-based) 클래스로 디자인하기 (4) | 2010.12.14 |
6장, 싱글턴(Singleton)의 구현 - 5. 싱글턴이 쓰레드를 만났을 경우 고려사항 (0) | 2010.12.05 |
6장, 싱글턴(Singleton)의 구현 - 4. 피닉스 싱글턴(phoenix singleton)의 구현과 그 한계점 (2) | 2010.12.04 |
6장, 싱글턴(Singleton)의 구현 - 3. 마이어스 싱글턴(Singleton)의 한계와 개선점 (0) | 2010.12.03 |
6장, 싱글턴(Singleton)의 구현 - 2. 싱글턴(Singleton)의 기초적인 구현 (0) | 2010.11.30 |
6장, 싱글턴(Singleton)의 구현 - 1. 싱글턴(Singleton)이란 무엇인가? (0) | 2010.11.30 |
5장, 일반화 함수자(함수 객체) - 7. 총평 (0) | 2010.11.28 |
최근댓글