用工厂方法替代构造器

------------恢复内容开始------------

代码样例

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:所返回的对象的类可以随着每次调用而发生变化,取决于静态工厂方法的参数值

 

------------恢复内容结束------------

上一篇:面试常客:手撕单例模式


下一篇:拉勾教育 Java就业急训营 学习笔记 static关键字