应该考虑使用Static Factory Methods方法创建对象 在Java中创建对象的方式有很多种。让客户端创建实例的类的传统方式是提供公共默认构造函数。但是,还有另一种创建Class实例的方法。一个类可以提供一个静态的公共方法,该方法是一个返回该类实例的静态方法。让我们看一个例子
public static Boolean valueOf(boolean a){ return a ? Boolean.TRUE : Boolean.FALSE; }
考虑静态方法有很多优点和缺点-
Advantages
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