静态工厂方法是很常用的一种设计模式(严格来说,并不是),总结优缺点如下:

优点:
1、可以有合理的名称。
2、不必每次调用的时候创建新的实例。比如单例模式。
3、可以返回原类型的任何子类型。
4、优化整体代码结构,增强可阅读性。

缺点:
1、“静态工厂方法的主要缺点在于,类如果不含有公有的或者受保护的构造器,就不能被子类化”。上面这句话,摘自“effective java”初看比较诧异,有种不知所云的感觉。后来思考了一下,这句话大概是这么理解的。
一个类若是选择静态工厂,那么一般会把创建方法标志成私有的,而用创建方法去调用(比如,getInstance)。这会影响其子类化的可实现性。

2、本质上与其他静态方法并无任何缺陷,没有明确标识。

静态工厂方法优缺点个人理解相关推荐

  1. 创建对象_工厂方法(Factory Method)模式 与 静态工厂方法

    工厂方法模式: 定义:为创建对象定义一个接口,让子类决定实例化哪个类.工厂方法让一个类的实例化延迟至子类. 应用场景: 客户类不关心使用哪个具体类,只关心该接口所提供的功能: 创建过程比较复杂,例如需 ...

  2. 第1条:考虑用静态工厂方法代替构造器

    为了获得一个类的实例,有两种办法1.类提供一个公有的构造器 2.类提供一个公有的静态工厂方法. 静态工厂方法的优势: 1.有名称. 慎重地选择方法名称能突出多个构造器的区别,例如使用BigIntege ...

  3. 设计模式之简单工厂模式(静态工厂方法)

    模式定义: 从设计模式的类型上来说,简单工厂模式是属于创建型模式,又叫做静态工厂方法(Static Factory Method)模式,但不属于23种GOF设计模式之一. 简单工厂模式是由一个工厂对象 ...

  4. 构造函数还是静态工厂方法?

    我相信Joshua Bloch在他的非常好的书" Effective Java"中首先说了它:与构造函数相比,静态工厂方法是实例化对象的首选方法. 我不同意. 不仅因为我相信静态方 ...

  5. 静态工厂方法代替构造器实例_静态工厂方法与传统构造方法

    静态工厂方法代替构造器实例 之前,我已经讨论过一些关于Builder模式的信息 , Builder Pattern是一种有用的模式,用于实例化具有几个(可能是可选的)属性的类,这些属性可以使读取,编写 ...

  6. 静态工厂方法与传统构造方法

    之前,我已经讨论过一些关于Builder模式的信息 , Builder Pattern是一种有用的模式,用于实例化具有多个(可能是可选的)属性的类,这些属性可以使读取,编写和维护客户端代码更加容易,还 ...

  7. 使用静态工厂方法而不是构造器

    注意:静态工厂方法不是设计模式中的工厂方法. 一个类向客户端提供静态工厂方法有如下好处: 有名称,不用根据参数类型和顺序区分重载方法,让代码更易读 是否每次调用都需要新对象是可控制的,对于不可修改的对 ...

  8. 01、静态工厂方法替代构造器

    考虑用静态工厂方法替代构造器 考虑使用静态工厂方法来替代构造器的原因: 静态工厂方法有名称:普通的构造器中,参数并不能很好地描述返回对象的特点,代码的阅读性不好. 考虑下面的程序: Random ra ...

  9. TIL —静态工厂方法

    今天,我的工作任务使我了解了静态工厂方法,这是初始化Java类的另一种方法. 有效的Java(Addison-Wesley 2018)帮助我理解了这个概念,以下是我对该阅读的简要介绍: 穿过真实工厂的 ...

最新文章

  1. faster rcnn接口_TF-Faster-rcnn宠物狗种类识别之对接自己的数据
  2. vue中解决Uncaught ReferenceError: regeneratorRuntime is not defined问题
  3. 注册MSComm方法
  4. 鸿蒙荣耀x10max,荣耀X10 Max有秘密武器:5G大屏手机能比4G还省电
  5. STM32 电机教程 33 - 无刷电机无感控制快速实现
  6. 雅思听力的词语练习打字!!!
  7. Exercise 12: Prompting People
  8. STM32工作笔记0069---汉字显示实验
  9. 《摩尔神话》:硅基经济的扫地僧戈登·摩尔
  10. mysql 公历变农历_巧用SQL函数让公历变农历
  11. 三本计算机专业考研211,一个三本学渣逆袭211的考研心得
  12. 一张厚度为0.1MM的纸对折多少次后,高度超过珠穆朗玛峰(8848米)?
  13. R语言绘制复杂抽样设计数据cox回归生存曲线(Kaplan-Meier)
  14. vue rsa加密 php解密,Vue项目中的RSA加解密
  15. 资源收藏:扁平化风格的图标
  16. 创建vue-ssr项目
  17. Loadrunner11破解详解 .
  18. unity ui 补间动画_杭州Unity游戏开发培训内容有哪些?学习路线是如何规划的?...
  19. 逻辑思维训练-流程图
  20. 网易、腾讯、阿里竞相押宝的NFT,还有多大的想象空间?

热门文章

  1. 平阳县抖音平台直播运营主播带货第三期培训提升班开班啦!
  2. CnOpenData中国行政区划shp数据
  3. 那些年我们没能bypass的xss filter[from wooyun]
  4. php 可视化模板编辑,MetInfo
  5. Java+SSM网上订餐系统点餐餐厅系统(含源码+论文+答辩PPT等)
  6. 003 Rust 网络编程,使用 IpAddr
  7. 解决iOS6 Apple ID无法登录!十年了,爷青回!还是那个iPhone 4s,竟然能登陆成功!
  8. Mac 驱动检测不出来原因
  9. signature=cdae83b1c2034e2244a378f624349dfb,恶意软件分析 URL链接扫描 免费在线病毒分析平台 | 魔盾安全分析...
  10. 张飞硬件MOSFET驱动电路_sdchguyi_新浪博客