저는 같은 카테고리에 속하는 다양한 Device들의 인터페이스를 일반화 하고 생성 함수를 만들어서 클라이언트 코드가 특정 구현객체에 의존하지 않을 수 있도록 하기 위해 Factory Pattern을 사용합니다. 주로 사용성은 아래와 같습니다.
1: //Radiometer 카테고리의 디바이스.
2:
3: DevRadiometer* radiometer = DevRadiometerCreator::Instance().Create( “K6485” );
4:
5: DevRadiometer* radiometerEmul = DevRadiometerCreator:Instance().Create( “emulator” );
6:
7:
8:
9: //Thermometer 카테고리의 디바이스.
10:
11: DevThermometer* thermometer = DevThermometerCreator::Instance().Create( “pk2000” );
12:
13: DevThermometer* themometerEmul = DevThermometerCreator::Instance().Create( “emulator” );
14:
위와 같이 Device 종류 별로 Factory 클래스를 만들어서 사용을 해 왔었는데요. 각각의 Factory 클래스 마다 반환하는 특정 클래스를 제외하면 구현 내용은 중복이 되었습니다. 이러한 중복을 제거하기 위해서 Template을 사용하여 Factory 자체를 일반화 하는 것을 구상해 보았습니다. 사용성은 아래와 같습니다.
1: DevRadiometer* radiometer = Factory<DevRadiometer>::Instance().Create( “K6480” );
2:
3: DevRadiometer* radiometerEmul = Factory<DevRadiometer>::Instance().Create( “emulator” );
4:
5:
6:
7: DevThermometer* thermometer = Factory<DevThermometer>::Instance().Create( “pk2000” );
8:
9: DevThermometer* thermometerEmul = Factory<DevThermometer>::Instance().Create( “emulator” );
10:
'프로그래밍 > Visual C++ / OpenGL' 카테고리의 다른 글
| C++ Template을 활용한 FactoryPattern 일반화 하기 (0) | 2011/12/26 |
|---|---|
| Visual C++ / OpenGL 개발 환경 설정 (0) | 2010/01/18 |
DevFactory.h


