工厂模式通过基类指针和多态实现对象创建,定义抽象产品类Product及具体类ConcreteProductA,使用智能指针管理生命周期,确保派生类实现use接口。

工厂模式是一种创建型设计模式,用于在不指定具体类的情况下创建对象。在C++中,通过基类指针和多态机制可以很好地实现工厂模式。下面介绍一个简单而实用的工厂模式实现方法。
1. 定义产品基类和具体产品类
首先定义一个抽象的产品基类,提供统一的接口。然后由具体的产品类继承并实现该接口。
产品基类通常包含纯虚函数,确保派生类必须实现对应功能 使用智能指针(如std::unique_ptr)管理对象生命周期更安全
示例代码:
class Product {public: virtual ~Product() = default; virtual void use() const = 0;};class ConcreteProductA : public Product {public: void use() const override { std::cout << "Using Product An"; }};class ConcreteProductB : public Product {public: void use() const override { std::cout << "Using Product Bn"; }};
2. 创建工厂类
工厂类提供一个创建对象的方法,根据输入参数决定实例化哪种具体产品。这种方式将对象创建逻辑集中管理,便于扩展和维护。
立即学习“C++免费学习笔记(深入)”;
工厂方法返回基类指针,调用者无需知道具体类型 可使用枚举或字符串作为创建类型的标识 添加新产品时只需修改工厂内部逻辑,不影响已有代码
示例代码:
enum class ProductType { TYPE_A, TYPE_B};class Factory {public: static std::unique_ptr createProduct(ProductType type) { switch (type) { case ProductType::TYPE_A: return std::make_unique(); case ProductType::TYPE_B: return std::make_unique(); default: throw std::invalid_argument("Unknown product type"); } }};
3. 使用工厂创建对象
客户端通过工厂接口获取所需对象,无需直接调用构造函数。这样解耦了对象创建与使用,提升了代码灵活性。
使用示例:
int main() { auto productA = Factory::createProduct(ProductType::TYPE_A); auto productB = Factory::createProduct(ProductType::TYPE_B); productA->use(); // 输出: Using Product A productB->use(); // 输出: Using Product B return 0;}
这种实现方式结构清晰,易于扩展。如果需要支持更多产品类型,只需新增派生类并在工厂中添加对应分支。基本上就这些,不复杂但容易忽略细节。
以上就是c++++怎么实现一个工厂模式_c++工厂模式实现方法的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1476984.html
微信扫一扫
支付宝扫一扫