《Effective Java》目录

1. 使用静态工厂方法代替构造器

传统的获取一个类的实例,是通过提供类的构造器(构造方法)。

静态工厂方法:返回类的实例的静态方法,与设计模式中的“工厂模式”不同。

一、静态工厂方法的优势

静态工厂方法与构造器相比的五大优势:

  1. 静态工厂方法有名称
    • 构造器的名称必须与类名相同,因此在描述返回对象时不够确切
  2. 使用静态工厂方法时,不必每次都创建新的对象返回
    • 使用不可变类时,可以返回预先创建好的实例,或者将创建的实例缓存起来,重复利用
    • 类似享元模式,如果程序经常创建相同的对象,且对象创建的代价很高,则能有效地提升性能
    • 还能严格控制在同一时刻,共存在几个实例
  3. 静态工厂方法,能返回原返回类型的所有子类型
    • 不太明白
  4. 静态工厂方法,所返回的对象的类可以随着每次调用而发生变化
    • 如 EnumSet,当元素少于64个时,静态工厂方法会返回一个 RegalarEumSet 实例,用单个 long 支持;否则返回一个 JumboEnumSet 实例,用 long 数组支持
    • 这两个实现类,对于客户端而言是不可见的。如果 RegularEnumSet 不能再给小枚举类型带来性能优势,则可能从未来版本中删除它,且不会造成任何影响

二、静态工厂方法的缺点

三、静态工厂方法的惯用名称

文章作者: koral
文章链接: http://luokaiii.github.io/2020/09/10/读书笔记/《EffectiveJava》中文版/1.用静态工厂方法代替构造器/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自