2010.12.25 18:17 책 정리/Modern C++ Design

이 포스트를 남긴 목적

  • 객체 팩토리란 무엇이며, 언제 필요하며, 어떻게 만들어져 있는지 정리하기 위해서

이 포스트의 준비물

  • g++, make, gvim
  • firefox 4 b7
  • vmplayer

참조 링크

참조 문헌

  • 안드레 알렉산드레스쿠 저. 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

저작자 표시
신고
posted by 농사를 짓는 게임 프로그래머 최익필

댓글을 달아 주세요