Effective Java笔记 - 01 用静态工厂方法替代构造方法

406 阅读1分钟

Java中取对象实例方法

  1. 公有的构造方法
Boolean bool = new Boolean("ture");
public Boolean(boolean value) {
    this.value = value;
}
  1. 静态工厂方法
Boolean bool = Boolean.valueOf("ture");
public static Boolean valueOf(String s) {
    return parseBoolean(s) ? TRUE : FALSE;
}

静态工厂方法的优势

  1. 静态工厂方法可以有自己的名字,见文知义;
  2. 静态工厂方法能够为重复的调用返回相同的对象,不必每次调用都创建一个新的实例;
// TRUE和FALSE是Boolean类的两个静态不可变属性
public static final Boolean TRUE = new Boolean(true);
public static final Boolean FALSE = new Boolean(false);
  1. 静态工厂方法可以返回原返回类型的任何子类型的对象;
  2. ...

静态工厂方法的缺点

静态工厂方法很难被程序员发现,下面给出一些通用的命名:

  1. from - 类型转换方法
Date date = Date.from(instant);
  1. of - 聚合方法
Set<Rank> faceCards = EnumSet.of(JACK, QUEUE, KING);
  1. ValueOf - 常见
String str1 = String.valueOf(123);
Integer int1 = Integer.valueOf("123");
Long long1 = Long.valueOf("123");
  1. instance或getInstance - 返回的实例通过方法的参数来描述
  2. create或newInstance - 每次调用返回一个新的实例
  3. ...

总结:静态工厂方法更加适用,切记第一反应就是提供公有的构造器,而不先考虑静态工厂!