Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
C++工厂方法模式 对象创建接口封装_创想鸟

C++工厂方法模式 对象创建接口封装

工厂方法模式通过虚函数将对象创建延迟到子类,实现解耦;C++中以抽象工厂定义接口,具体工厂创建具体产品,客户端仅依赖抽象,符合开闭原则,便于扩展与维护。

c++工厂方法模式 对象创建接口封装

工厂方法模式是一种创建型设计模式,它把对象的创建过程封装到子类中,让父类不依赖具体对象的类型。在C++中,通过虚函数定义创建对象的接口,由派生类决定实例化哪个类,从而实现对象创建的解耦。

工厂方法模式的核心思想

定义一个用于创建对象的接口,但让子类决定实例化哪一个类。工厂方法让类的实例化推迟到子类。

关键点:

有一个抽象工厂基类,声明一个创建对象的虚函数每个具体工厂继承基类,实现自己的对象创建逻辑客户端代码只依赖抽象接口,不关心具体类型

基本实现结构

以生产不同类型的“产品”为例:

立即学习“C++免费学习笔记(深入)”;

#include #include 

// 产品抽象基类class Product {public:virtual ~Product() = default;virtual void use() const = 0;};

// 具体产品Aclass ConcreteProductA : public Product {public:void use() const override {std::cout << "使用产品 An";}};

// 具体产品Bclass ConcreteProductB : public Product {public:void use() const override {std::cout << "使用产品 Bn";}};

// 工厂基类 - 定义创建产品的接口class Factory {public:virtual ~Factory() = default;virtual std::unique_ptr createProduct() const = 0;};

// 具体工厂A - 创建产品Aclass ConcreteFactoryA : public Factory {public:std::unique_ptr createProduct() const override {return std::make_unique();}};

// 具体工厂B - 创建产品Bclass ConcreteFactoryB : public Factory {public:std::unique_ptr createProduct() const override {return std::make_unique();}};

使用示例

客户端通过工厂接口创建对象,无需知道具体类名:

int main() {    // 可以根据配置或条件选择工厂    std::unique_ptr factory;
// 假设条件判断使用哪种工厂bool useTypeA = true;if (useTypeA) {    factory = std::make_unique();} else {    factory = std::make_unique();}// 创建产品auto product = factory->createProduct();product->use();  // 输出:使用产品 Areturn 0;

}

优势与适用场景

工厂方法模式在C++中特别适合以下情况:

避免在代码中写死 new 操作:将对象创建集中管理扩展性好:新增产品类型时,只需添加新的工厂类,不修改已有代码符合开闭原则:对扩展开放,对修改关闭解耦客户端与具体类:客户端只依赖抽象接口

基本上就这些。工厂方法模式用虚函数把对象创建封装起来,让程序更灵活,也更容易维护。不复杂但容易忽略细节,比如记得把析构函数设为虚函数,避免资源泄漏。

以上就是C++工厂方法模式 对象创建接口封装的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1473016.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
C++联合体类型双关 二进制数据解释方法
上一篇 2025年12月18日 20:05:16
C++内存对齐规则 alignas关键字用法
下一篇 2025年12月18日 20:05:19

相关推荐

发表回复

登录后才能评论
关注微信