C++设计模式之工厂模式
工厂模式是一种创建型设计模式,旨在提供一种创建对象的接口,但允许子类决定实例化哪个类。工厂模式有多种形式,其中最常见的包括简单工厂模式、工厂方法模式和抽象工厂模式。
以下是一个简单工厂模式的例子,演示了如何使用工厂方法创建不同类型的产品对象:
#include <iostream>
// 抽象产品类
class Product {
public:
virtual void display() = 0;
virtual ~Product() {}
};
// 具体产品类A
class ConcreteProductA : public Product {
public:
void display() override {
std::cout << "This is Product A." << std::endl;
}
};
// 具体产品类B
class ConcreteProductB : public Product {
public:
void display() override {
std::cout << "This is Product B." << std::endl;
}
};
// 抽象工厂类
class Factory {
public:
// 工厂方法,用于创建产品对象
virtual Product* createProduct() = 0;
virtual ~Factory() {}
};
// 具体工厂类A
class ConcreteFactoryA : public Factory {
public:
// 实现工厂方法,创建具体产品A
Product* createProduct() override {
std::cout << "This is Factory A." << std::endl;
return new ConcreteProductB();
}
};
// 具体工厂类B
class ConcreteFactoryB : public Factory {
public:
// 实现工厂方法,创建具体产品B
Product* createProduct() override {
std::cout << "This is Factory B." << std::endl;
return new ConcreteProductA();
}
};
int main() {
// 使用工厂A创建产品A
Factory* factoryA = new ConcreteFactoryA();
Product* productA = factoryA->createProduct();
productA->display();
// 使用工厂B创建产品B
Factory* factoryB = new ConcreteFactoryB();
Product* productB = factoryB->createProduct();
productB->display();
// 释放资源
delete factoryA;
delete factoryB;
delete productA;
delete productB;
return 0;
}