設計模式的工廠模式家族中,分別有簡單工廠模式,工廠方法模式和抽象工廠模式三種。簡單工廠模式是工廠模式家族中最簡單實用的一種模式。簡單工廠模式的實質是由一個工廠類根據傳入的參數,動態決定應該建立哪個產品類(這些產品類繼承自一個父類或接口)的實例。設計模式
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 . . .優化