第八话-工厂方法模式

第八话-工厂方法模式

大家好,又见面了,我是全栈君。




一直想不通你为什么那么狠心。今天用一下工厂方法模式吧。

一、什么是工厂方法模式?
所谓工厂方法模式即简单工厂模式的升级版。

工厂方法模式和简单工厂模式除了工厂类不同之外其它都一样。
二、有了简单工厂模式为什么还用工厂方法模式?
简单工厂模式似乎非常easy。正由于如此。他的工厂类违背了设计模式中的开放封闭原则。以第一话中的计算器为例。每次添加一个新的操作时都要更改工厂类里的switch分支。

这样就违背了面向对象设计的扩展而非改动-也既是之前学习的开放封闭原则。怎么解决问题呢?我们能够採用依赖倒转原则对其完好。
三、代码演示样例(在第一话计算器的基础上改动)
第一个变化:
把之前的OperationFactory.java改动例如以下
public interface OperationFactory {
 public Operation createOperation();
}
第二个变化:
加入新的工厂类:AddFactory.java
public class AddFactory implements OperationFactory {
 public Operation createOperation() {
  // TODO Auto-generated method stub
  return new AddOperation();
 }
}
使用AddFactory给OperationFactory实例化
OperationFactory factory = new AddFactory();
Operation operation = factory.creaOperation();

第八话-工厂方法模式

注:此图来自《大话设计模式》
四、总结
因为有前面简单工厂模式和封闭开放原则的基础,此模式非常easy。一起学习,加油。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/116625.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • CentOS5下的confluence的安装与配置

    CentOS5下的confluence的安装与配置

    2022年3月11日
    51
  • webstorm 19 激活码【2021最新】

    (webstorm 19 激活码)JetBrains旗下有多款编译器工具(如:IntelliJ、WebStorm、PyCharm等)在各编程领域几乎都占据了垄断地位。建立在开源IntelliJ平台之上,过去15年以来,JetBrains一直在不断发展和完善这个平台。这个平台可以针对您的开发工作流进行微调并且能够提供…

    2022年3月27日
    70
  • RestSharp的使用记录「建议收藏」

    RestSharp的使用记录「建议收藏」关于使用RestSharp在.net4.5时应安装105.0.0.0好像新的版本不支持,需要.net4.5.2才可以调用传参的方法varclient=newRestClient($”{url}SFContract/Send”);varrequest=newRestRequest();request.Method=Method.POST;//a.[FromBody]接收

    2025年10月3日
    2
  • jsonp跨域原理简单总结_jsonp的工作原理

    jsonp跨域原理简单总结_jsonp的工作原理JavaScript是一种在Web开发中经常使用的前端动态脚本技术。在JavaScript中,有一个很重要的安全性限制,被称为“Same-OriginPolicy”(同源策略)。这一策略对于JavaScript代码能够访问的页面内容做了很重要的限制,即JavaScript只能访问与包含它的文档在同一域下的内容。JavaScript这个安全策略在进行多iframe或多窗口编程、以及Ajax

    2025年6月10日
    2
  • 陈述python中运算符的优先级_numpy逻辑运算符

    陈述python中运算符的优先级_numpy逻辑运算符python逻辑运算符1.成员andornot优先级:()>not>and>or2.and逻辑运算符and,aandb,如果a和b都为True,则返回True,如果其中一个为False,返回False,简言之:一假则假,全真则真3.or逻辑运算符or,aorb,如果a和b有一个为True,则返回True,如果全为False,返回False,简言之:一真则真…

    2025年8月10日
    2
  • Linux系统安装Cache数据库配置环境

    Linux系统安装Cache数据库配置环境1 Cach 介绍 nbsp 官网 https www intersystems com 开发者社区 https community intersystems com nbsp nbsp gt gt nbsp download nbsp Cach 安装指南 https docs intersystems com latest csp docbook DocBook UI Page cls KEY G

    2025年11月8日
    3

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号