// 抽象产品类
class Product {
public:
virtual void operation() = 0;
};
// 具体产品类A
class ProductA : public Product {
public:
void operation() override {
std::cout << "Product A operation" << std::endl;
}
};
// 具体产品类B
class ProductB : public Product {
public:
void operation() override {
std::cout << "Product B operation" << std::endl;
}
};
// 工厂类
class Factory {
public:
static Product* createProduct(char type) {
switch(type) {
case 'A':
return new ProductA();
case 'B':
return new ProductB();
default:
return nullptr;
}
}
};
// 调用示例
int main() {
Product* productA = Factory::createProduct('A');
productA->operation();
Product* productB = Factory::createProduct('B');
productB->operation();
delete productA;
delete productB;
return 0;
}
以上代码中,抽象产品类 Product
定义了产品的基本行为,具体产品类 ProductA
和 ProductB
继承自 Product
并实现了产品的具体行为。工厂类 Factory
中的 createProduct
方法根据传入的参数类型创建对应的具体产品对象,并返回指向抽象产品类的指针。在调用示例中,通过工厂类创建了 ProductA
和 ProductB
两种产品的对象,并调用了它们的操作方法。最后要注意及时释放创建的对象。