EffectiveJava 读书笔记2020/02/17

考虑用静态工厂方法代替构造器

优点

  • 相比构造器,静态工厂有名称
  • 不必在每次调用的时候都创建一个新对象
  • 可以返回原返回类型的任何子类型的对象
    EffectiveJava 读书笔记2020/02/17
  • 在创建参数化类型实例的时候,使代码变得更加简洁
    EffectiveJava 读书笔记2020/02/17

缺点

  • 类如果不含公有的或者受保护的构造器,就不能子类化
  • 与其他的静态方法实际上没有任何区别

遇到多个构造器参数时要考虑用构造器

  1. 重叠构造器方式
    缺点是一旦参数过多,构造方法就几何增加
    EffectiveJava 读书笔记2020/02/17
  2. JAVABeans模式
    缺点在于构造过程分到了几个调用中,构造中,JavaBean可能处于不一致的状态,导致失败。
    EffectiveJava 读书笔记2020/02/17
  3. Builder模式
    让客户端利用所有必要的参数调用构造器,得到一个builder对象,然后调用类似于setter的方法,来设置每个相关的可选参数。最后调用无惨的build方法生成不可变的对象。
    EffectiveJava 读书笔记2020/02/17
    EffectiveJava 读书笔记2020/02/17

用私有构造器或枚举类型强化Singleton属性

  1. 私有构造器,公有元素
    EffectiveJava 读书笔记2020/02/17
  2. 静态工厂实现
    EffectiveJava 读书笔记2020/02/17
    但序列化时还需要额外工作
    EffectiveJava 读书笔记2020/02/17
  3. 枚举实现
    EffectiveJava 读书笔记2020/02/17
    枚举方式实现,额外提供了序列化功能