工厂方法模式

简介:

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

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

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

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

  操作类

 

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

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

 



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

目录
相关文章
|
9月前
|
设计模式 算法 定位技术
策略模式(Strategy Pattern)
策略模式(Strategy Pattern)是一种行为型设计模式,允许在运行时选择算法或行为,而不是在编译时确定。通过将具体算法封装成独立的类,并通过统一接口与客户端交互,实现算法的动态替换,避免代码重复和复杂条件语句。适用于支付方式切换、导航路径选择等场景。
266 1
|
10月前
|
测试技术 开发者 Python
使用Python解析和分析源代码
本文介绍了如何使用Python的`ast`模块解析和分析Python源代码,包括安装准备、解析源代码、分析抽象语法树(AST)等步骤,展示了通过自定义`NodeVisitor`类遍历AST并提取信息的方法,为代码质量提升和自动化工具开发提供基础。
702 9
|
12月前
|
前端开发 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)修复类型错误等。每部分均提供详细分析与实用代码示例,帮助开发者快速定位并解决问题。
248 3
|
安全 数据安全/隐私保护
什么是多因素认证?
【5月更文挑战第14天】什么是多因素认证?
1063 0
|
弹性计算 监控 安全
阿里云APP有什么用?在哪里可以下载纯净版?阿里云APP下载及使用介绍
手机阿里云App是阿里云官方出品的移动应用,为用户提供随时随地触达阿里云的能力。目前网上有很多第三方平台都可以下载,但是有的用户担心第三方平台的APP不是纯净版,可能带有其他插件。其实我们可以通过阿里云官方就能下载到纯净版的APP,纯净版APP具有安全、便捷、快速、实时的特点,帮助用户在手机上快速购买续费、进行云产品的管控。
1505 0
阿里云APP有什么用?在哪里可以下载纯净版?阿里云APP下载及使用介绍
|
弹性计算 对象存储 CDN
阿里云服务器流量怎么收费?多少钱1GB流量?
阿里云服务器流量怎么收费?多少钱1GB流量?0.8元每GB,如果是北京、上海、深圳、杭州等地域的话,中国香港1GB流量要1元
1918 0
阿里云服务器流量怎么收费?多少钱1GB流量?
|
API 开发工具 iOS开发
iOS 审核 2.3.1 被拒解决办法
iOS 审核 2.3.1 被拒解决办法
2234 0
|
机器学习/深度学习 人工智能 文字识别
【前沿技术RPA】 一文学会用UiPath实现PDF自动化——锚点基准活动
UiPath在传统的RPA(Robotic process automation)的基础上,增加了See(AI通过计算机视觉阅读用户的计算机屏幕)和Think(通过机器学习来发现平台能够为用户构建什么自动化流程)从而不断帮助用户自动化构建流程,而不仅仅是用户自主发现,自主构建。并且在构建的过程当中,做到了Low-code甚至是No-code的程度,让每一位员工都可以自主使用。
【前沿技术RPA】 一文学会用UiPath实现PDF自动化——锚点基准活动
|
开发框架 Java Spring
Autowired和Resource的区别
@Resource和@Autowired都是做bean的注入时使用,其实@Resource并不是Spring的注解,它的包是javax.annotation.Resource,需要导入,但是Spring支持该注解的注入。
329 0
|
Web App开发 存储 编解码