Effective Java---No.1考虑静态工厂替代构造器

public static Boolean valueOf(boolean b){
return b ? Boolean.TRUE : Boolean.FALSE;
}

 静态工厂方法与构造器不同的几大优点

  1. 它有名称。(构造器可以有多个,对于其他人来说选择哪个构造器是一种很麻烦的事情,如果用静态工厂则是一目了然,静态工厂可以定义方法名来区分多个构造器之间的差别)
  2. 不必每次调用都创建一个新对象。
  3. 可以返回原返回类型的任何子类型。(这个EnumSet类是最好的例子)
  4. 实例化带参数的代码更简单
Map<String, List<String>> m = new HashMap<String, List<String>>();


A.newInstance();
public static <K, V> HashMap<K,V> newInstance(){
return new HashMap<K, V>();
}

静态工厂的缺点

  1. 类如果不含共有会protected 的构造器,就不能子类化
  2. 它和其他的静态类没区别(难以找到自己要的方法),所以要靠命名上去弥补了。(一般命名 ValueOf,of,getInstance,newInstance,getType,newType)

转载于:https://www.cnblogs.com/Tony-Shen/archive/2012/03/01/2375119.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值