一般客户端访问类实例的方式是使用一个public的构造函数。但是也可以使用一个public的static factory method,它只是一个返回类实例的简单静态方法。注意static factory method不同于设计模式中的Factory Method。static factory method的例子如Boolean类中下面代码:
public static Boolean valueOf(boolean b) {
return b ? Boolean.TRUE : Boolean.FALSE;
}
可以用static factory method代替构造函数,也可以同时使用两者。用static factory method代替构造函数的好处是:
1.不同于构造函数,静态工厂方法可以灵活命名。
2.不同于构造函数,静态工厂方法不需要每次在调用的时候创建一个新对象。
3.不同于构造函数,静态工厂方法可以返回返回类型的任何子类型。
4.使用静态工厂方法减少了创建参数类型实例的繁琐。
使用static factory method的缺点是:
1.如果仅仅提供静态工厂方法,而不提供public或者protected构造函数的话,那么构造函数就不能被子类型化。
2.静态工厂方法很容易同其他静态方法混淆在一起。
结论:
In summary, static factory methods and public constructors both have their
uses, and it pays to understand their relative merits. Often static factories are preferable,
so avoid the reflex to provide public constructors without first considering
static factories.
静态工厂方法和public的构造函数都有自己的用法,需要理解各自的相关优缺点。通常静态工厂方法是比较合适的选择。因此在首先不考虑静态工厂方法的时候因避免提供public构造函数所带来的影响。
posted on 2008-06-17 10:07
一叶笑天 阅读(173)
评论(0) 编辑 收藏