------------恢复内容开始------------
代码样例
public class Singleton { private static Singleton instance; private Singleton() { } public static Singleton getInstance() { instance = instance == null ? new Singleton() : instance; return instance; } }
静态工厂方法相较于构造器的优势
优势1:它们有名字
如果构造器本身没有确切的描述正被返回的参数,那么具有适当名称的静态工厂方法会更容易使用,产生的客户端代码也具有易读性。
优势2:不必再每次调用的时候都创建一个新的对象
不可变类可以使用预先构建好的实例,或者将构建好的实例缓存起来,进行重复的利用,从而避免创建不必要的重复对象。
优势3:可以反回原返回类型的任意子类型
让我们在选择返回类型的时候具有很多灵活性。
优势4:所返回的对象的类可以随着每次调用而发生变化,取决于静态工厂方法的参数值
------------恢复内容结束------------