C++ 设计模式 – 简单工厂模式

C++ 设计模式 – 简单工厂模式-猿说编程
C++ 设计模式 – 简单工厂模式
【开通黄金会员可免费阅读所有付费文章】
5
限时特惠
19.9
源码为站长亲测可以使用,如果下载地址无效,请直接留言或者联系站长
付费阅读
已售 91
ChatGPT 3.5 国内中文镜像站免费使用啦

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C++ 面向对象

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C++ 设计模式

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C++ STL

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C/C++ 技术杂谈

零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C/C++ 常用函数


一.简单工厂简述

简单工厂模式(Simple Factory Pattern)又叫做静态工厂方法模式(Static Factory Method Pattern),属于创建型模式。简单工厂模式的实质是由一个工厂类根据传入的参数,动态决定应该创建哪一个产品类的实例。

值得注意的是,简单工厂模式并不属于 23 种 GoF 设计模式之一。它是工厂模式家族中最简单实用的模式,可以理解为是不同工厂模式的一个特殊实现。


二.简单工厂模式结构

  • 工厂(Factory):整个模式的核心,负责实现创建所有实例的内部逻辑。
  • 抽象产品(Product):所有具体产品的父类,负责描述所有实例所共有的公共接口。
  • 具体产品(ConcreteProduct):最终创建的具体产品

三.简单工厂优缺点

优点:

  • 工厂类包含了必要的逻辑判断,根据指定的信息来创建对应的产品。客户端仅负责“消费”产品即可,实现了对象创建和使用的分离。
  • 客户端无需关心具体产品如何创建与组织,仅需知道具体产品所对应的参数即可,可以在一定程度减少使用者的记忆量。

缺点:

  • 由于工厂类集中了所有产品的创建逻辑(违反了高内聚责任分配原则),职责过重,一旦无法正常工作,整个系统都将受到影响。
  • 一旦添加新产品就不得不修改工厂逻辑,在产品类型较多时,有可能造成工厂逻辑过于复杂,不利于系统的扩展和维护。

这些缺点在 C++ 工厂方法模式 中得到了一定的克服。


四.简单工厂适用场景

  • 工厂类负责创建的对象比较少(不会造成工厂方法中的业务逻辑太过复杂)。
  • 客户端仅需知道传入工厂类的参数,对于如何创建对象(逻辑)不关心。

PS: 由于简单工厂很容易违反高内聚责任分配原则,因此一般只在很简单的情况下应用。


五.简单工厂案例分析

BBA – 奔驰、宝马、奥迪

图片[1]-C++ 设计模式 – 简单工厂模式

互联网行业有三巨头 BAT,汽车界也有三大豪门 BBA – 奔驰、宝马、奥迪。他们是驰名世界的汽车企业,也被认为是高档汽车生产的先导,最可怕的是均属于德国制造。奔驰优雅稳重、宝马操控感强、奥迪大气,更是官车的代表。。。“坐奔驰,开宝马”,足以说明一切。在国内,BBA 大受欢迎,对很多人来说,不仅是代步工具,更是身份的象征。

车再好,也需要在工厂中加工生产,来一起看看简单工厂模式吧!


六.简单工厂代码实现

1.创建抽象产品

示例中,需要有一个汽车产品 – ICar:

/************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): https://www.codersrc.com/archives/21653.html
//@File:C++ 设计模式 – 简单工厂
//@Time:2023/02/04 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/************************************************************************/


// product.h
#ifndef PRODUCT_H
#define PRODUCT_H

#include <string>

using namespace std;

// 汽车接口
class ICar
{
public:
    virtual string Name() = 0;  // 汽车名称
};

#endif // PRODUCT_H

2.创建具体产品

模型有了,来创建一些具体的汽车,示例代码如下:

七.猜你喜欢

  1. C++ 设计模式 – 单例模式
  2. C++ 设计模式 – 抽象工厂模式
  3. C++ 设计模式 – 工厂方法模式
  4. C++ 设计模式 – 享元模式
  5. C++ 设计模式 – 桥接模式
  6. C++ 设计模式 – 模版方法模式
  7. C++ 设计模式 – 访问者模式
  8. C++ 设计模式 – 备忘录模式
  9. C++ 设计模式 – 中介者模式
  10. C++ 设计模式 – 策略模式
  11. C++ 设计模式 – 职责链模式
  12. C++ 设计模式 – 状态模式
  13. C++ 设计模式 – 代理模式
  14. C++ 设计模式 – 组合模式
  15. C++ 设计模式 – 外观模式
  16. C++ 设计模式 – 简单工厂模式

ChatGPT 3.5 国内中文镜像站免费使用啦
© 版权声明
THE END
喜欢就支持一下吧
点赞9 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容