一、用静态工厂方法代替构造器的优势

1、静态构造方法与构造器不同的第一大优势在于,他们有名称,而构造器名字相同,容易混淆,例如:

使用静态构造方式的方式,我们就可以通过知道产生的是什么样类型的对象,而不用去看构造方法产生的API

2、静态构造方法与构造器不同的第二大优势在于,不必每次调用它们的时候都创建一个对象,例如:

3、静态构造方法与构造器不同的第三大优势在于,它们可以返回原返回类型的任何子类的对象,例如:

4、静态构造方法与构造器不同的第四大优势在于,所返回的对象的类可以随着每次调用而发生,例如:

5、静态构造方法与构造器不同的第五大优势在于,方法返回的对象所属的类,在编写包含该类静态工厂方法的类时可以不存在

二、用静态工厂方法代替构造器的缺点

1、静态工厂方法的主要缺点在于,类如果不含公有的或者受保护的构造器,就不能被子类化

2、静态构造方法的第二个缺点在于,程序员很难发现他们

Java九十条经验法则之第一条:用静态工厂方法代替构造器相关推荐

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

    转载链接:https://www.jianshu.com/p/ceb5ec8f1174 1.序:什么是静态工厂方法 在 Java 中,获得一个类实例最简单的方法就是使用 new 关键字,通过构造函数来 ...

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

    第1条:考虑采用静态工厂方法代替构造器 第1条:考虑采用静态工厂方法代替构造器 对类而言,为了让客户端获取它自身的一个实例,最常用的方法就是提供一个公有的构造器.还有一种应该被程序员重视的方法:类提供 ...

  3. java 静态工厂方法代替构造器的好处

    Java 的静态工厂方法 序:什么是静态工厂方法 Effective Java 2.1 静态工厂方法与构造器不同的第一优势在于,它们有名字 2.2 第二个优势,不用每次被调用时都创建新对象 2.3 第 ...

  4. 《Effective Java》学习笔记 - (1) 使用静态工厂方法代替构造器

    文章目录 前言 使用静态工厂方法代替构造器 1. 优点 1.1 静态工厂方法有名称 1.2 不必每次调用的时候都创建一个对象 1.3 可以返回类型的任何子类型的对象 1.4 所返回的对象的类型可以随着 ...

  5. Effective Java 第一条:考虑用静态工厂方法代替构造器

    优势: 第一条:静态工厂方法有名称,可以从名字看出方法的作用,容易使用. 第二条:不必每次调用都创建一个新对象. 第三条:静态工厂方法可以返回原类型的任何子类型的对象. 第四条:在创建参数化类型的实例 ...

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

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

  7. 《Effective Java》读书笔记 Item 1:考虑静态工厂方法,而不是构造器

    众所周知,要想能获取一个类的实例,该类得要提供一个public的构造器.但是<Effective Java>书中说还有一个方法,那就是提供静态工厂方法(static factory met ...

  8. 一起读经典-《Effective Java》1.1 考虑使用静态工厂方法代替构造器

    1.静态工厂方法相较于构造器的优点 a.静态工厂方法能够自定义名称,使代码可读性更高 b.不必在每次调用的时候都创建新的实例 c.可以返回类型的子类型对象 2.静态工厂方法的常用名称: value o ...

  9. 小鸡爪读Effective Java记录1:用静态工厂方法代替构造器

    //小鸡爪 == 菜鸡 遇到多个构造器参数时要考虑使用构建器 Preface 静态工厂和构造器有个共同的局限性:它们都不能很好地扩展到大量的可选参数.比如用一个类表示包装食品外面显示的营养成分标签.这 ...

最新文章

  1. css中 margin: 0px 254px 0px 254px; 是什么意思。
  2. 在单元测试时指定HttpContext的各种Path
  3. 我是如何在两天内做完一个网站的
  4. python3.7.2安装包_Win10下python 2.7与python 3.7双环境安装教程图解
  5. 一个电子工程师的完美人生!
  6. addr2line探秘
  7. 游戏项目中观察者模式解析
  8. php语法介绍,PHP 函数语法介绍一
  9. 当规模到亿级,MySQL是一个更好的NoSQL!
  10. 第一行代码android第三版pdf,第一行代码:Android PDF 下载
  11. C语言自学路之验证码
  12. 转:信息部是管理部门or服务部门?这些CIO在群里“吵” 起来了
  13. 菜单下拉列表怎么实现慢慢出现效果-----过渡(transition)
  14. 输入qq号强制进空间_除了QQ号一键登录,迷你世界QQ版还有哪些神奇之处?
  15. java 等额本金与等额本息
  16. oracle datamodeler64,Toad Data Modeler6免费版
  17. Qt自带示例演示程序
  18. mysql3306端口被占用无法终止_Mysql3306端口被占用无法启动解决办法
  19. HTTPS 与 SSL
  20. 守护进程 - Supervisor的使用

热门文章

  1. 换种思路解释自我管理
  2. 第二章:恶意软件动态分析基础
  3. IOS仿支付宝首页滑动效果
  4. 工作后,同学关系渐渐疏远了,心里莫名有些失落,怎么办?
  5. 更改xshell远程服务器的终端字体颜色并突出显示用户名
  6. dlna 电脑连r1_pc 电脑如何投屏到电视? DLNA
  7. XCTF-Normal_RSA 萌新版解题WriteUp
  8. 【MC】新加载器 Quilt 好用吗?和 Fabric 相比好在哪?
  9. 《TextScanner: Reading Characters in Order for Robust Scene Text Recognition》阅读笔记
  10. 压测工具ab的安装(mac下)