1、静态工厂方法的与构造器的第一大优势:他们有名称;能够更加确切的描述正被返回的对象;
2、第二大优势在于,不必在每次调用时都创建一个新对象,对于经常请求创建相同对象,且创建对象的代价很高的情况下,可大大提升性能
3、静态工厂方法可以返回原返回类型的任何子类型的对象;
4、在创建参数化类型实例的时候,使得代码更加简洁:
例:Map<String,Integer> map=new HashMap<String,Integer>();利用静态工厂方法
public static <K,V> HashMap<K,V> newInstance(){
return new HashMap<K,V>();
}
利用静态工厂方法,可变为Map<String,Integer>map=HashMap.newInstance();
缺点:
1、类中如果不含有公有的或者受保护的构造器,则不能被子例化;
2、静态工厂方法与其他静态方法实际上没有任何区别;