设计模式的工厂模式家族中,分别有简单工厂模式,工厂方法模式和抽象工厂模式三种。简单工厂模式是工厂模式家族中最简单实用的一种模式。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该建立哪个产品类(这些产品类继承自一个父类或接口)的实例。设计模式
CBatterySize(父类或接口类) #pragma once class CBatterySize { public: CBatterySize(void); ~CBatterySize(void); virtual void Show() = 0; }; CBatterySizeA(产品类A) #pragma once #include "batterysize.h" class CBatterySizeA : public CBatterySize { public: CBatterySizeA(void); virtual ~CBatterySizeA(void); void Show() { printf("Battery Size A\n"); } }; CBatterySizeB(产品类B) #pragma once #include "batterysize.h" class CBatterySizeB : public CBatterySize { public: CBatterySizeB(void); virtual ~CBatterySizeB(void); void Show() { printf("Battery Size B\n"); } }; Factory(工厂类) #pragma once #include "batterysize.h" #include "BatterySizeA.h" #include "BatterySizeB.h" enum SizeType{ SizeA, SizeB }; class CFactory { public: CFactory(void); ~CFactory(void); // 简单工厂模式 static CBatterySize* CreateBatterySize(enum SizeType sizeType) { if (sizeType == SizeA) { return new CBatterySizeA; } else if (sizeType == SizeB) { return new CBatterySizeB; } else { return NULL; } } }; main函数: int _tmain(int argc, _TCHAR* argv[]) { CBatterySize* batSizeA = CFactory::CreateBatterySize(SizeA); CBatterySize* batSizeB = CFactory::CreateBatterySize(SizeB); batSizeA->Show(); batSizeB->Show(); delete batSizeA; delete batSizeB; system("pause"); return 0; }
结果:函数
Battery Size A
Battery Size B
Press any key to continue . . .优化