欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

02_23 抽象工厂模式的设计模式

最编程 2024-10-09 20:39:47
...
// 抽象产品A class AbstractProductA { public: virtual void Use() = 0; }; // 具体产品A1 class ConcreteProductA1 : public AbstractProductA { public: void Use() override { std::cout << "Using A1" << std::endl; } }; // 具体产品A2 class ConcreteProductA2 : public AbstractProductA { public: void Use() override { std::cout << "Using A2" << std::endl; } }; // 抽象产品B class AbstractProductB { public: virtual void Use() = 0; }; // 具体产品B1 class ConcreteProductB1 : public AbstractProductB { public: void Use() override { std::cout << "Using B1" << std::endl; } }; // 具体产品B2 class ConcreteProductB2 : public AbstractProductB { public: void Use() override { std::cout << "Using B2" << std::endl; } }; // 抽象工厂 class AbstractFactory { public: virtual AbstractProductA* CreateProductA() = 0; virtual AbstractProductB* CreateProductB() = 0; }; // 具体工厂1 class ConcreteFactory1 : public AbstractFactory { public: AbstractProductA* CreateProductA() override { return new ConcreteProductA1(); } AbstractProductB* CreateProductB() override { return new ConcreteProductB1(); } }; // 具体工厂2 class ConcreteFactory2 : public AbstractFactory { public: AbstractProductA* CreateProductA() override { return new ConcreteProductA2(); } AbstractProductB* CreateProductB() override { return new ConcreteProductB2(); } }; // 客户端代码 int main() { AbstractFactory* factory = new ConcreteFactory1(); AbstractProductA* productA = factory->CreateProductA(); AbstractProductB* productB = factory->CreateProductB(); productA->Use(); productB->Use(); delete productA; delete productB; delete factory; return 0; }