Effective Java笔记 - 静态工厂方法

Effective Java笔记 - 静态工厂方法

静态工厂方法(static factory method)是除构造器外的另一种创建对象实例的途径。(与设计模式中的工厂方法无关。)

例:

public static Boolean valueOf(boolean b) {

	return b ? Boolean.TRUE : Boolean.FALSE;

}

使用静态工厂方法而不是构造器的优缺点

优点

  1. 静态工厂方法有名字,便于程序的使用和阅读。当类需要多个构造方法时,利用多个不重名的静态工厂方法可以解决给定参数时唯一构造器的限制。
  2. 不必每次调用都创建一个新的对象。immutable类可以使用preconstructed对象或者缓存对象、重复使用,节省资源。这样的类是instance-controlled,保证singleton或noninstantiable,以及在immutable value类中保证不存在两个相等的实例,a.equals(b)当且仅当a == b。
  3. 可以返回任何属于返回值子类的对象。这样API不必公开其类,隐藏实现细节。
  4. 返回的对象所属的类是一个随输入参数变化而变化的函数。
  5. 返回对象所属的类可以是尚未存在的类。

缺点

  1. 没有public或protected构造器的类不能有子类。(在immutable类型的情况下是这必须的,并且促使程序员使用composition而不是inheritance,转化成了优点。)
  2. 不如构造器更方便于程序员在API文档中找到。

参考文献:

  1. Bloch, J. (2017). Effective Java (3rd ed.). Addison-Wesley Professional.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值