设计模式实现(二): Abstract Factory Pattern

    技术2025-03-23  55

    #include "stdafx.h" #include <iostream> #include <windows.h> // 产品 class CAbstractProductA { public: virtual CAbstractProductA() {} virtual void Print() = 0; }; class CAbstractProductB { public: virtual CAbstractProductB() {} virtual void Print() = 0; }; class CProductA1 : public CAbstractProductA { public: virtual void Print() { std::cout << "ProductA1" << std::endl; } }; class CProductA2 : public CAbstractProductA { public: virtual void Print() { std::cout << "ProductA2" << std::endl; } }; class CProductB1 : public CAbstractProductB { public: virtual void Print() { std::cout << "ProductB1" << std::endl; } }; class CProductB2 : public CAbstractProductB { public: virtual void Print() { std::cout << "ProductB2" << std::endl; } }; // 工厂 class CAbstractFactory { public: virtual CAbstractProductA* CreateProductA() = 0; virtual CAbstractProductB* CreateProductB() = 0; }; class CConcreteFactory1 : public CAbstractFactory { public: virtual CAbstractProductA* CreateProductA() { return new CProductA1(); } virtual CAbstractProductB* CreateProductB() { return new CProductB1(); } }; class CConcreteFactory2 : public CAbstractFactory { public: virtual CAbstractProductA* CreateProductA() { return new CProductA2(); } virtual CAbstractProductB* CreateProductB() { return new CProductB2(); } }; // 使用 void CreateProducts(CAbstractFactory* pAbstractFactory) { CAbstractProductA* pProductA = pAbstractFactory->CreateProductA(); pProductA->Print(); CAbstractProductB* pProductB = pAbstractFactory->CreateProductB(); pProductB->Print(); delete pProductA; delete pProductB; } int _tmain(int argc, _TCHAR* argv[]) { CAbstractFactory* pAbstractory = new CConcreteFactory1(); CreateProducts(pAbstractory); delete pAbstractory; pAbstractory = new CConcreteFactory2(); CreateProducts(pAbstractory); delete pAbstractory; return 0; }

    最新回复(0)