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