零基础 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++ 常用函数
一.工厂方法模式简述
工厂方法模式(Factory Method Pattern)是一种常用的对象创建型设计模式,此模式的核心思想是封装类中不变的部分,提取其中个性化善变的部分为独立类,通过依赖注入以达到解耦、复用以及方便后期维护拓展的目的。
二.工厂方法模式结构
- Factory(抽象工厂):是工厂方法模式的核心,与应用程序无关。任何在模式中创建的对象的工厂类必须实现这个接口。
- ConcreteFactory(具体工厂):实现抽象工厂接口的具体工厂类,包含与应用程序密切相关的逻辑,并且被应用程序调用以创建产品对象。
- Product(抽象产品):所创建对象的基类,也就是具体产品的共同父类或共同拥有的接口。
- ConcreteProduct(具体产品):实现了抽象产品角色所定义的接口。某具体产品有专门的具体工厂创建,它们之间往往一一对应。
三.工厂方法模式优缺点
优点:
- 克服了简单工厂模式违背开放-封闭原则的缺点,又保留了封装对象创建过程的优点,降低客户端和工厂的耦合性。所以说,“工厂方法模式”是“简单工厂模式”的进一步抽象和推广。
缺点:
- 每增加一个产品,相应的也要增加一个子工厂,加大了额外的开发量。
四.工厂方法模式适用场景
- 对于某个产品,调用者清楚地知道应该使用哪个具体工厂服务,实例化该具体工厂,生产出具体的产品来。
- 只是需要一种产品,而不想知道也不需要知道究竟是哪个工厂生产的,即最终选用哪个具体工厂的决定权在生产者一方,它们根据当前系统的情况来实例化一个具体的工厂返回给使用者,而这个决策过程对于使用者来说是透明的。
五.工厂方法模式案例分析
工厂模式基本和简单工厂模式差不多,简单工厂模式 – 在产品子类添加时,需要添加一个判断分支,这违背了开放-封闭原则。因此,工厂模式就是为了解决这个问题而产生的。
/************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): https://www.codersrc.com/archives/21416.html
//@File:C++ 设计模式 – 工厂方法模式
//@Time:2023/01/31 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/************************************************************************/
所以,对于 简单工厂模式 一节中的 BBA 来说,要分别由对应的工厂来生产。
六.工厂方法模式代码实现
七.猜你喜欢
ChatGPT 3.5 国内中文镜像站免费使用啦
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
暂无评论内容