您的位置:首页 > 编程语言 > Java开发

2015070704 - EffactiveJava笔记 - 第15条 使可变性最小(1)

2015-07-07 07:43 429 查看
20150707 星期二 北京

不可变类只是对象不能被修改的类,每个对象包含的信息必须在类创建实例的时候提供,并且在对象生命周期内不变.

为什么要存在不可变的类呢?不可变的类比可变类更加容易设计,实现和使用,不易出错,更加安全.

使类不可变遵循五条原则:

1.不要提供修改对象属性的方法.(只有get没有set)

2.保证类不会被扩展.目的在于防止粗心或者恶意的子类假装对象状态已经修改,破坏类的不可变行为.防止子类化,一般使用final修饰类.

3.所有的属性都是final的.如果一个指向新创建对象的引用在缺乏同步机制的情况下,从一个线程被传递到另一个线程,就必须确保正确的行为.

4.所有的属性都是私有的.防止客户端获取属性引用的可变对象的权限,不允许直接修改对象.技术上允许不可变的类具有共有的final属性,只要其包含基本类型的值或者不可变对象的引用,但是不建议这么做,会使得以后无法改变内部表示方法(可扩展性差).

5.确保对于任何可变组件的互斥访问.如果类具有指向可变对象的属性,则必须确保类的客户端无法获得指向这些对象的引用,并且永远不要用客户端提供的对象引用来初始化这样的属性,不提供任何方法来返回该对象的引用.在构造器和访问方法中使用保护性拷贝.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: