可以参考 静态工厂方法
用静态工厂方法代替构造器的几个优点:
1.静态工厂方法有名称
我们可以为静态工厂方法起不同的名称,从而在调用时识别出该方法创建的实例是哪种类型的。
2.避免创建重复的对象
我们在使用静态工厂方法时不必在每次调用时创建一个新的对象。可以将构建好的实例缓存起来,进行重复利用,从而避免创建不必要的重复
对象。可以将构造方法私有化,通过一个函数返回一个唯一得到对象,从而避免创建重复的对象,这种方式在单例模式中用的很多。
public class Singleton { private static Singleton st = null; //构造方法私有化,只通过 getInstance来获取实例 private Singleton() { } public static Singleton getInstance() { if(st==null){ st=new Singleton(); } return st; } }
3.返回原类型任何子类型的对象
API可以返回对象,同时又不会使对象的类变成公有的,接口为静态工厂方法提供了自然返回类型
缺点
1.类如果不包含公有的或者受保护的构造器,就不能被子类化。
2.他们与其他静态方法没有任何区别