ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

设计模式-工厂模式(Factory)

2026/8/9 16:38:09 拓冰建站 浏览量
设计模式-工厂模式(Factory)

Factory模式是一种创建型设计模式,用于封装对象的实例化过程。它提供了一个统一的接口来创建不同类型的对象,而无需暴露具体的实例化逻辑给客户端。

#include <iostream>
#include <memory>// AbstractProduct(抽象产品类):定义产品共同的接口
class Product {
public:virtual void operation() = 0;
};// ConcreteProductA(具体产品类A)
class ConcreteProductA : public Product {
public:void operation() override {std::cout << "ConcreteProductA operation" << std::endl;}
};// ConcreteProductB(具体产品类B)
class ConcreteProductB : public Product {
public:void operation() override {std::cout << "ConcreteProductB operation" << std::endl;}
};// Factory(工厂类):负责创建具体产品对象
class Factory {
public:std::unique_ptr<Product> createProduct(int type) {switch (type) {case 1:return std::make_unique<ConcreteProductA>();case 2:return std::make_unique<ConcreteProductB>();default:return nullptr;}}
};int main() {Factory factory;std::unique_ptr<Product> productA = factory.createProduct(1);if (productA)productA->operation();std::unique_ptr<Product> productB = factory.createProduct(2);if (productB)productB->operation();return 0;
}

抽象产品类Product,它定义了产品的共同接口。具体的产品类ConcreteProductA和ConcreteProductB继承自抽象产品类,实现了各自的具体操作。工厂类Factory负责创建具体产品对象。它根据传入的类型参数,在createProduct()方法中使用简单的条件语句创建相应的产品对象。此处使用std::unique_ptr来管理创建的产品对象,以确保资源的正确释放。