第17 条:使可变性最小化

使可变性最小化

核心思想

能把类做成不可变的就做成不可变的,比如String,Integer,Long等
即使不能做成不可变的,也要尽可能的使类的成员变量变成private final的。

优点

1.不可变对象比较简单。不可变对象可以只有一种状态,即被创建时的状态。
2.不可变对象本质上是线程安全的,并发状态下不用额外考虑他们。当多个线程并发访问这样的对象时,它们不会遭到破坏。
3.不可变对象可以被自由地共享而不会发生错误。

缺点

例如String,每次要使用一个新值字符串的时候就要重新创建一个对象,幸亏有常量池,要不然创建对象的开销太大。对于不可变类经常改变数值的情况,往往会有一个他的伴生类来做这类事情,比如String对应的StringBuilder和StringBuffer就是用来频繁修改String对象时的替代类。

总之

1.除非必要,不要为每个成员变量都设置set方法。
2.如果类不能作为不可变的,则尽量让他不可变,可以防止出错的可能性。
3.除非必要,成员变量都设置为final的
4.构造器应该完全初始化对象,除非必要,重新初始化或者在其他地方初始化都是不可取的

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值