使用静态工厂方法有几个优势(相对于构造器)
1. 该静态工厂方法有名称,通过赋予有意义的名称,使用该方法的程序员可以清晰的知道该方法的含义。而不同的构造器具有相同的名称,很难表示各自的不同含义,特别是当构造器的参数类型相同(可能顺序不同),这样程序员很容易出错。www.2cto.com
2. 静态工厂方法不必每次调用都会创建一个新对象,比如你可以在静态工厂方法里限定创建该对象的个数,当超出规定的个数时,返回缓存里的对象。而每次调用构造器都会创建一个新的对象。
3. 静态工厂方法可以返回原返回类型的任何子类型的对象。使用接口来引用对象可以使程序有较大的灵活性。
4. 静态工厂方法在创建参数化类型的时候,可以使代码更加简洁。考虑实例化一个Map对象,该map的变量类型和实例化时都必须指明参数类型,很是繁琐:
Map> m = new HashMap>();
当使用静态工厂方法时,
public static HashMap newInstance() {
return new HashMap();
}
Map> m = HashMap.newInstance();