工厂方法模式( Factory Method ):定义一个用于创建对象的接口 IFactory,在具体的ConcreteFactory子类中根据传进的参数即具体子类ConcreteProduct决定实例化哪一个IProduct产品,该模式使得一个类(即IProduct)的实例化延迟到其子类(即ConcreteProduct)

今晚看代码的时候看到工厂类中方法和参数都使用static修饰,于是很好奇的想为什么一定要使用静态方法。百度了一下,发现百度了一堆垃圾,根本没有找到自己想要的答案。后来去Stack Overflow,果然找到了相关的问题。因为是英文的,所以翻译过来并综合整理了一下。

为什么要在工厂模式中使用静态方法

工厂模式是一种封装对象创建的方法。如果不使用工厂模式,你就需要直接使用构造方法来创建对象:

Foo x = new Foo()

使用工厂模式,就可以取而代之的调用工厂方法:

Foo x = Foo.create()

工厂类的构造方法被标记为private,所以构造方法除了在类的内部被调用以外就不能够被访问。工厂类的其他方法被标记为static,这样就不需要在调用该方法之前必须首先拥有一个该类的对象。

使用工厂模式有一些好处。其一工厂类可以从许多子类(subclasses)(或者一个接口的实现)并返回它( One is that the factory can choose from many subclasses (or implementers of an interface) and return that. )。用这种方式调用方法可以通过参数来确定类的行为而不需要知道或者理解类的潜在的复杂层次(This way the caller can specify the behavior desired via parameters

java 工厂类静态方法,为什么要在JAVA工厂模式中使用静态方法相关推荐

  1. java 用映射写工厂类_java23种设计模式——三、工厂模式

    目录 工厂模式 工厂模式介绍 工厂模式是我们最常用的实例化对象模式了,是用工厂方法代替new操作的一种模式.著名的Jive论坛 ,就大量使用了工厂模式,工厂模式在Java程序系统可以说是随处可见.因为 ...

  2. java 实体类 临时注解_JPA:Java持久层API--配置流程

    一.JPA概述 1.1 JPA是什么 JPA (Java Persistence API) Java持久化API.是一套Sun公司 Java官方制定的ORM 方案,是规范,是标准 ,sun公司自己并没 ...

  3. java回收类_Java的内存回收——Java引用的种类

    1.Java引用的种类 Java是面向对象的编程语言,一个Java程序往往需要创建大量的Java类,然后对各Java类创建大量的Java对象,再调用这些Java对象的属性和方法来操作它们. 程序员需要 ...

  4. 用java有理数类包含加减乘除_用java具体代码实现分数(即有理数)四则运算

    用java具体代码实现分数(即有理数)四则运算 1,背景 Java老师布置了一个关于有理数运算的题目,因为参考书上有基本代码,所以自己主要是对书上代码做了一点优化,使其用户交互性更加友好以及代码封装性 ...

  5. java有理数类的封装_【Java笔记】有理数的类封装

    分数是有理数(Rational),我们经常做分数的四则运算得到的是小数,如果我们运行分数的四则运算想要得到分数,要怎样做呢? 用类实现对有理数的封装可以做到. 有理数有两个重要的成员,即分子(nume ...

  6. 【Java工具类】(1)—Java中驼峰与下划线相互转换

    Java工具类(1)-Java中驼峰与下划线相互转换 1.驼峰命名法 /** * 驼峰式命名法 */ public static String toCamelCase(String s) {if (s ...

  7. 【Java工具类】(10)—java中给图片添加水印

    Java工具类(10)-java中给图片添加水印 1.工具类 package util;import javax.imageio.ImageIO; import java.awt.*; import ...

  8. java有理数类的封装_【Java 教程(原创)】025.参数传值——有理数的类封装

    马上注册,结交更多好友,享用更多功能^_^ 您需要 登录 才可以下载或查看,没有帐号?立即注册 x 本帖最后由 零度非安全 于 2017-4-7 11:09 编辑 点击图片穿越到 索引帖,听说有惊喜! ...

  9. java语言类间继承关系是,Java语言类间的继承关系是(    )。

    Java语言类间的继承关系是(    ). 更多相关问题 [判断题] 持有OPEN票的游客不需要机票的确认,可直接按票面时间去机场乘坐飞机.() [填空题] 导游服务性质是().().().().() ...

最新文章

  1. Python+OpenCV 图像处理系列(4)—— 图像像素的读写、算术运算、逻辑运算及像素的统计
  2. python全栈开发 * 24 知识点汇总 * 180705
  3. 电脑画画软件_手机原来可以画出这么美的插画!|手机画画软件app篇
  4. 看准网点评没有了_大众点评“亡”于2020
  5. php计算机基础知识,计算机基础知识①
  6. 11.15 dmidecode:查询系统硬件信息
  7. 彻底卸载SqlServer2008R2
  8. ida和idr机制分析(盘符分配机制)
  9. 19.7 主动模式和被动模式 19.8 添加监控主机 19.9 添加自定义模板 19.10 处理图形中的乱码 19.11 自动发现...
  10. kloxo 一行安装 -cnblogs
  11. 单点登录有关跨域的点
  12. batik 在java中,java – Batik不在classpath中
  13. Testbed静态分析
  14. 这一次带你彻底了解远程Cookie操作
  15. Reciprocal Learning Networks for Human Trajectory Prediction
  16. 半次元收藏夹爬虫(残疾版,不喜勿喷)
  17. 轴流风机和离心风机有什么区别?
  18. Java——I/O(字符编码、内存流、打印流、System、输入流、序列化)
  19. 支持生僻字且自动识别utf-8编码的php汉字转拼音类,支持生僻字且自动识别utf-8编码的php汉字转拼音类_PHP...
  20. windows通过安卓手机的【usb共享网络】上网突然无法上网的解决

热门文章

  1. Flow公链 |FCL1.0正式上线
  2. 信息计算机课评课,信息技术听课反思
  3. STM32连接HT1621段码屏驱动
  4. python 连接elasticsearch时sniff探测的问题
  5. 神经网络通俗理解和理解,卷积神经网络通俗理解
  6. 打印2015年的月历
  7. 元宇宙技术教程|如何一键生成虚拟人视频
  8. 李开复:AI 创业的十个真相 | 深度
  9. LitCTF2023 郑州轻工业大学首届网络安全赛 WP 部分
  10. 吴恩达机器学习课后作业ex3(python实现)