Java 8/9最佳实践-第1部分(Static Factory Methods)


应该考虑使用Static Factory Methods方法创建对象 在Java中创建对象的方式有很多种。让客户端创建实例的类的传统方式是提供公共默认构造函数。但是,还有另一种创建Class实例的方法。一个类可以提供一个静态的公共方法,该方法是一个返回该类实例的静态方法。让我们看一个例子

public static Boolean valueOf(boolean a){
  return a ? Boolean.TRUE : Boolean.FALSE;
}

考虑静态方法有很多优点和缺点-

Advantages

  1. 静态方法有一个名字
  2. 不需要在每次调用对象时创建对象
  3. 他们可以返回其返回类型的任何子类型的对象
  4. 根据输入参数的不同,返回的对象的类可能因调用而异
  5. 编写包含该方法的类时,返回的对象的类不必存在

Limitations 如果我们仅公开用于对象创建的静态方法,则没有公共或受保护的构造函数的类不能被子类化。 与构造函数不同,程序员可能很难找到要在其中创建对象的方法 静态工厂方法的一些常用名称

Date d = Date.from (instance); //from
2
Set<Status> statuses = EnumSet.of(INITIATED, INPROGRESS,COMPLETED);//Use of Of
3
String str1 = String.valueOf(Integer.MAX_VALUE); // use of valueOf
4
Object newArray = Array.newInstance(classObject, length) // use of newInstance
5
BufferedReader br = Files.newBufferedReader(path);//use of newType

静态工厂方法和公共构造函数均具有其用户。最好使用静态工厂,因此请避免定义公共构造函数,并考虑是否可以使用静态工厂。


原文链接:http://codingdict.com