第1条:考虑用静态工厂方法代替构造器

第1条:考虑使用静态工厂方法代替构造器

Boolean类中的静态工厂方法

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

优点

  1. 静态工厂方法可以自由的使用名称,可阅读性更高,使用时更为直观。而构造函数中不同构造器只能通过不同的参数来进行区分,容易造成混淆。
  2. 不需要在每一次调用时都创建一个新的对象,更适合单例模式使用。
  3. 返回类型上更为自由,可以返回任何原类型的子类型的对象。
  4. 在使用泛型创造实例时,代码可以变得更加简洁。

    未使用静态构造方法时,需要填写两次类型参数:

    Map<String, List<String>> m = new HashMap<String, List<String>>();

    但如果HashMap中提供了这个静态工厂:

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

    就可以只填写一次类型参数来创建对象:

    Map<String, List<String>> m = HashMap.newInstance();

缺点

  1. 如果不含有public或protect的构造器就不能直接使用构造函数进行实例化。
  2. 静态工厂方法与其它的静态方法本质上没有区别,如果希望通过API文档查找静态工厂方法是比较困难的。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值