商城首页欢迎来到中国正版软件门户

您的位置:首页 >C++工厂模式实现方法详解

C++工厂模式实现方法详解

  发布于2025-11-28 阅读(0)

扫一扫,手机访问

工厂模式通过基类指针和多态实现对象创建解耦,定义抽象产品类Product并由ConcreteProductA和B实现use方法,工厂函数根据类型返回具体产品实例,main函数中调用use输出对应信息,集中管理对象创建,新增产品只需扩展工厂逻辑,需注意虚析构函数和内存管理。

C++如何实现一个简单的工厂模式_C++ 工厂模式实现方法

工厂模式是一种创建型设计模式,用来解耦对象的创建过程。在C++中,通过基类指针和多态机制,可以实现一个简单的工厂模式,让程序在运行时根据需求创建不同的派生类对象。

定义产品基类

首先定义一个抽象的产品基类,提供统一的接口。具体的产品类将继承这个基类并实现其方法。

class Product { public: virtual ~Product() = default; virtual void use() const = 0; }; class ConcreteProductA : public Product { public: void use() const override { std::cout << "Using Product A\n"; } }; class ConcreteProductB : public Product { public: void use() const override { std::cout << "Using Product B\n"; } };

实现简单工厂类

工厂类包含一个静态方法,根据输入参数决定创建哪种具体产品。调用者无需知道具体类名,只需通过工厂获取对象。

class SimpleFactory { public: static std::unique_ptr createProduct(char type) { switch (type) { case 'A': return std::make_unique(); case 'B': return std::make_unique(); default: return nullptr; } } };

使用工厂创建对象

客户端代码通过工厂接口创建对象,而不是直接调用构造函数,从而降低耦合度。

int main() { auto product1 = SimpleFactory::createProduct('A'); auto product2 = SimpleFactory::createProduct('B'); if (product1) product1->use(); // 输出:Using Product A if (product2) product2->use(); // 输出:Using Product B return 0; }

这种方式把对象的创建集中在一个地方,新增产品时只需修改工厂逻辑(或扩展为更灵活的工厂方法模式),原有代码基本不用动。基本上就这些,不复杂但容易忽略细节比如内存管理和虚析构函数。

本文转载于:互联网 如有侵犯,请联系zhengruancom@outlook.com删除。
免责声明:正软商城发布此文仅为传递信息,不代表正软商城认同其观点或证实其描述。

热门关注