Effective Java(第三版)读书笔记(一)

第二章 创建和销毁对象

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

  • 优势
    • 与构造器相比,它们有名称 。
    • 不用在每次调用它们的时候都创建一个新对象。
    • 它们可以返回原返回类型的任何子类型的对象。
    • 所返回的对象的类可以随着每次调用而发生变化,这取决于静态工厂方法的参数值。
    • 方法返回的对象所属的类,在编写包含该静态工厂方法的类时可以不存在。(构成了服务提供者框架的基础,例如JDBC的API)
  • 缺点
    • 类如果不含公有的或者受保护的构造器,就不能被子类化
    • 程序员很难发现它们

第二条:遇到多个构造器参数时要考虑使用构造器

静态工厂和构造器有个共同的局限性:它们都不能很好地拓展到大量的可选参数。
通常的构造器模式有:

  1. 重叠构造器(telescoping constructor)模式,参数多时编写、阅读困难。
  2. JavaBeans模式,setter设置每个参数,但在构造过程中JavaBean可能处于不一致状态,并且把类做成不可变的可能性不复存在。
  3. 建造者(Builder)模式,它不直接生成想要的对象,而是让客户端利用必要的参数调用构造器(或者静态工厂)得到一个builder对象,然后客户端在builder对象上调用类似setter的方法,来设置每个相关的可选参数。最后客户端调用无参的build方法来生成通常是不可变的对象。
    简而言之,如果类的构造器或者静态工厂中具有多个参数,设计这种类时,Builder模式就是一种不错的选择。

第三条:用私有构造器或者枚举类型强化singleton属性

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值