#include<iostream>
#include<string.h>
using namespace std;
// 抽象产品类
class Product {
public:
virtual void operation() = 0;
};
// 具体产品类A
class ConcreteProductA : public Product {
public:
void operation() override {
std::cout << "ConcreteProductA::operation()" << std::endl;
}
};
// 具体产品类B
class ConcreteProductB : public Product {
public:
void operation() override {
std::cout << "ConcreteProductB::operation()" << std::endl;
}
};
// 工厂类
class Factory {
public:
virtual Product* createProduct() = 0;
};
// 具体工厂类A
class ConcreteFactoryA : public Factory {
public:
Product* createProduct() override {
return new ConcreteProductA();
}
};
// 具体工厂类B
class ConcreteFactoryB : public Factory {
public:
Product* createProduct() override {
return new ConcreteProductB();
}
};
//具体步骤是工厂A生产A类产品,A类产品调用功能operation函数使用产品的功能
int main() {
// 创建具体工厂对象
Factory* factoryA = new ConcreteFactoryA();
Factory* factoryB = new ConcreteFactoryB();
// 使用工厂对象创建具体产品对象
Product* productA = factoryA->createProduct();
Product* productB = factoryB->createProduct();
// 调用产品对象的操作方法
productA->operation();
productB->operation();
// 释放资源
delete productA;
delete productB;
delete factoryA;
delete factoryB;
return 0;
}