第一条:用静态工厂方法代替构造函数
工厂方法只是一个简单的静态方法,它返回的是类的一个实例。
好处:
1、静态工厂方法的一个好处是,与构造函数不同,静态工厂方法具有名字。
2、它们每次被调用的时候,不要求非得创建一个新的对象。
3、它们可以返回一个原返回类型的子类型的对象。(这一点在Collections Framework里体现得淋漓尽致
)
缺点:
1、它们与其它的静态方法没有任何区别。(所以要在文档中加上特殊说明)
2、类如果不含有公有的或者受保护的构造函数,就不能被除数子类化。(我这觉得这倒好,鼓励我们尽
量使用复合结构而不是继承)
常用方法名:
valueOf----------该方法返回的实例与它的参数具有同样的值
如:
public static Boolean valueOf(boolean b) {
return (b?Boolean.TRUE:Boolean.FALSE);
}
getInstance------返回的实例是由方法的参数来描述的,但不能说与参数具有同样的值
如:
public static Foo getInstance(String key) {
initMapIfnessary();
Class c = (Class)implementations.get(key);
if(c==nul)
return new DefaultFoo();
try {
return (Foo)c.newInstance();
}catch(Exception e) {
return new DefaultFoo();
}
}
}