EffectiveJava 读书笔记2020/02/17

1.考虑用静态工厂方法代替构造器

优点

  • 相比构造器,静态工厂有名称
  • 不必在每次调用的时候都创建一个新对象
  • 可以返回原返回类型的任何子类型的对象
    在这里插入图片描述
  • 在创建参数化类型实例的时候,使代码变得更加简洁
    在这里插入图片描述

缺点

  • 类如果不含公有的或者受保护的构造器,就不能子类化
  • 与其他的静态方法实际上没有任何区别

2.遇到多个构造器参数时要考虑用构造器

  1. 重叠构造器方式
    缺点是一旦参数过多,构造方法就几何增加
    在这里插入图片描述
  2. JAVABeans模式
    缺点在于构造过程分到了几个调用中,构造中,JavaBean可能处于不一致的状态,导致失败。
    在这里插入图片描述
  3. Builder模式
    让客户端利用所有必要的参数调用构造器,得到一个builder对象,然后调用类似于setter的方法,来设置每个相关的可选参数。最后调用无惨的build方法生成不可变的对象。
    在这里插入图片描述
    在这里插入图片描述

3.用私有构造器或枚举类型强化Singleton属性

  1. 私有构造器,公有元素
    在这里插入图片描述
  2. 静态工厂实现
    在这里插入图片描述
    但序列化时还需要额外工作
    在这里插入图片描述
  3. 枚举实现
    在这里插入图片描述
    枚举方式实现,额外提供了序列化功能

4.通过私有构造器强化不可实例化的能力

背景:工具类不希望被实例化
在这里插入图片描述

5.避免创建不必要的对象

在这里插入图片描述
在这里插入图片描述
无意识的自动装箱拆箱可能也可能带来性能开销
在这里插入图片描述
但这是在对象很多的情况下。
在这里插入图片描述

6.消除过期的对象引用

自己管理内存的类,可能存在内存泄露

下面的栈中会维护弹出对象的引用。栈会越来越大
在这里插入图片描述

内存泄露的另一个常见来源是缓存

在这里插入图片描述

内存泄露的第三个常见来源是监听器和其他回调

在这里插入图片描述

7.避免使用终结的方法

缺点在于不一定会执行。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值