关闭

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

标签: java
222人阅读 评论(0) 收藏 举报
分类:

    20150707 星期二  北京

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

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

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

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

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

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

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

    5.确保对于任何可变组件的互斥访问.如果类具有指向可变对象的属性,则必须确保类的客户端无法获得指向这些对象的引用,并且永远不要用客户端提供的对象引用来初始化这样的属性,不提供任何方法来返回该对象的引用.在构造器和访问方法中使用保护性拷贝.

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:82395次
    • 积分:4377
    • 等级:
    • 排名:第6822名
    • 原创:364篇
    • 转载:45篇
    • 译文:1篇
    • 评论:2条
    文章存档
    最新评论