public static Boolean valueOf(boolean b) {
return b ? Boolean.TRUE : Boolean.FALSE;
}
静态工厂方法的优点
- 构造方法没有名字,但是静态工厂方法是有名字的
如果构造方法的参数本身并不描述被返回的对象,则具有精心选择名称的静态工厂更易于使用,并且生成的客户端代码更易于阅读。
- 不需要每次调用时都创建一个新对象
- 可以返回其返回类型的任何子类型的对象
这种灵活性的一个应用是 API 可以返回对象而不需要公开它的类。 以这种方式隐藏实现类会使 API 非常紧凑。
- 返回对象的类可以根据输入参数的不同而不同
声明的返回类型的任何子类都是允许的。 返回对象的类也可以随每次发布而不同。
- 在编写包含该方法的类时,返回的对象的类不需要存在
这种灵活的静态工厂方法构成了服务提供者框架的基础,比如 Java 数据库连接 AP(JDBC)。服务提供者框架是提供者实现服务的系统,并且系统使得实现对客户端可用,从而将客户端从实现中分离出来。
静态工厂方法的缺点
- 没有公共或受保护构造方法的类不能被子类化
要想将Collections
框架中任何遍历的实现类进行子类化,是不可能的。
- 程序员很难找到它们
它们不像构造方法那样在 API 文档中明确的标注出来。因此,对于提供了静态方法而不是构造器的类来说,想要查明如何实例化一个类是十分困难的。
评论 (0)