工厂方法模式

简介:

  对于上一篇中的简单工厂模式,它利用一个【工厂类】来有选择型的实例化指定的对象(要利用加法类时,传入参数“加法”之后工厂类就会去实例化OperateAdd类,并返回该实例),而对于工厂方法模式来说,他为每个操作类都创建一个工厂类,调用工厂类再来实例化指定对象!

首先来创建一个接口,来统一各个工厂类的行为
interface IFactory
{
Operation CreateOperation(); //返回值类型为所有操作类的父类
}

  AddFactory-加法工厂类
  SubFactory-减法工厂类
  MulFactory-乘法工厂类

  上述这些工厂类都返回给自对应的操作类的实例,当想要利用加法操作时,只需要调用工厂类中的CreateOperation方法即可,那么对于到底该调用那个工厂类的逻辑判断,就需要自己来写了,这一点工厂方法模式和简单工厂模式是不同的!

  操作类

 

  1.看起来工厂方法模式对于简单工厂模式来说也米有优势,算是反倒麻烦了,因为对到底应该调用那一个工厂类的逻辑判断抛了出来,需要在客户端代码中自己来做判定。

  2.工厂方法模式遵循了 开放-封闭原则,对于工厂方法模式来说,如果要对其进行扩展(添加除法操作),需要添加了一个继承自Operate类的除法操作类,再添加一个实现IFactory接口的除法工厂类即可,而如果对简单工厂模式进行扩展的话,不仅需要增加操作类,还需要去对工厂类进行逻辑的修改,这么一来就违背了开放-封闭原则。其实,两者本质的差别是因为在工厂方法模式中判断到底调用那一个工厂类的操作抛给了客户端代码来实现,所以在组件的范围内就不需要修改,只扩展即可。

 



本文转自武沛齐博客园博客,原文链接:http://www.cnblogs.com/wupeiqi/p/3288534.html,如需转载请自行联系原作者

目录
相关文章
|
10月前
|
设计模式 算法 定位技术
策略模式(Strategy Pattern)
策略模式(Strategy Pattern)是一种行为型设计模式,允许在运行时选择算法或行为,而不是在编译时确定。通过将具体算法封装成独立的类,并通过统一接口与客户端交互,实现算法的动态替换,避免代码重复和复杂条件语句。适用于支付方式切换、导航路径选择等场景。
293 1
|
自动驾驶 物联网 5G
5G网络的演进:从理论到实践
【10月更文挑战第3天】5G网络作为新一代移动通信技术,不仅在理论上实现了重大突破,而且在实践中也展现出了强大的生命力。本文将围绕5G网络的演进,从理论基础到实际应用,探讨5G技术的发展和实践案例,同时提供代码示例以供参考。
531 6
|
前端开发 JavaScript 区块链
react18函数组件+antd使用指南-使用代码集合以及报错记录汇总
本文介绍了多个React开发中常见的问题及其解决方案,包括但不限于:1)`useForm`实例未连接到任何`Form`元素的警告及解决方法;2)监听页面滚动事件的实现方式;3)React 18与antd 5.8.6中定制主题的方法;4)React结合antd 4.x版本自定义主题色的步骤;5)解决`ResizeObserver loop`相关报错的技巧;6)处理React设计表单时遇到的CDN资源加载失败问题;7)解决onClick事件传参问题;8)修复类型错误等。每部分均提供详细分析与实用代码示例,帮助开发者快速定位并解决问题。
281 3
|
存储 数据挖掘 Linux
Linux命令split详解:大文件处理的得力助手
`split`命令是Linux用于将大文件分割成小文件的工具,常用于日志处理、备份。它支持按行数(-l)、字节数(-b)分割,并能自定义输出文件名(-a, -d)。例如,`split -b 10M largefile.txt smallfile_`会按10MB切割`largefile.txt`,生成`smallfile_`开头的文件。注意确保磁盘空间充足,避免文件名冲突,并备份原始文件。结合其他命令使用,能提高文件管理效率。
|
弹性计算 监控 安全
阿里云APP有什么用?在哪里可以下载纯净版?阿里云APP下载及使用介绍
手机阿里云App是阿里云官方出品的移动应用,为用户提供随时随地触达阿里云的能力。目前网上有很多第三方平台都可以下载,但是有的用户担心第三方平台的APP不是纯净版,可能带有其他插件。其实我们可以通过阿里云官方就能下载到纯净版的APP,纯净版APP具有安全、便捷、快速、实时的特点,帮助用户在手机上快速购买续费、进行云产品的管控。
1617 0
阿里云APP有什么用?在哪里可以下载纯净版?阿里云APP下载及使用介绍
|
弹性计算 对象存储 CDN
阿里云服务器流量怎么收费?多少钱1GB流量?
阿里云服务器流量怎么收费?多少钱1GB流量?0.8元每GB,如果是北京、上海、深圳、杭州等地域的话,中国香港1GB流量要1元
1983 0
阿里云服务器流量怎么收费?多少钱1GB流量?
|
API 开发工具 iOS开发
iOS 审核 2.3.1 被拒解决办法
iOS 审核 2.3.1 被拒解决办法
2264 0
|
JavaScript 前端开发 开发工具
F12解决网页不能复制
很多人想要复制网页上的文字时,经常因为种种原因而无法复制,教你一招轻松解决。
1747 0
F12解决网页不能复制
|
机器学习/深度学习 人工智能 文字识别
【前沿技术RPA】 一文学会用UiPath实现PDF自动化——锚点基准活动
UiPath在传统的RPA(Robotic process automation)的基础上,增加了See(AI通过计算机视觉阅读用户的计算机屏幕)和Think(通过机器学习来发现平台能够为用户构建什么自动化流程)从而不断帮助用户自动化构建流程,而不仅仅是用户自主发现,自主构建。并且在构建的过程当中,做到了Low-code甚至是No-code的程度,让每一位员工都可以自主使用。
【前沿技术RPA】 一文学会用UiPath实现PDF自动化——锚点基准活动
|
存储 设计模式 运维
案例酷丨中国体育彩票:一张彩票的上云之旅
经历了起步、探索到壮大,走向新的历史时期的体育彩票,正在经历着由快速到健康的转型发展,彩票因责任而生,更要与社会责任并行,作为国家公益彩票,中国体育彩票经过25年持续健康发展,累计筹集公益金超过5000亿元,担当起越来越多的社会责任,成为推动社会公益事业和体育事业发展的重要力量。
案例酷丨中国体育彩票:一张彩票的上云之旅