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

原创 2015年07月07日 07:43:10

    20150707 星期二  北京

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

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

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

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

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

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

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

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

版权声明:本文为博主原创文章,未经博主允许不得转载。

《Effective Java》Second Edition中文版笔记(完整)

第2章 创建和销毁对象

effect java 学习摘要(3) - 类和接口

使类和成员可访问最小化 信息隐藏 & 封装 : 模块之间通过API进行通信 尽可能地使每个类或者成员不被外界访问 . private or public 在公有类中使用访问方法而非公有域 如果类可...

2015070701 - EffactiveJava笔记 - 第13条 使类和成员的可访问性最小(3)

成员属性绝对不能公有的.为什么呢?如果此属性是非final,或者执行可变对象的final引用,一旦使属性公开,就等于放弃了对存储在这个属性中数据进行限制的能力,放弃了强制此属性不可变的能力;当属性被修...

2015070508 - EffactiveJava笔记 - 第13条 使类和成员的可访问性最小(2)

Java那些机制完成信息隐藏呢?    1.访问控制决定类,接口,成员的可访问性;    2.对象的可访问性由该对象声明所在的位置,以及修饰对象的访问控制修饰符共同决定.      第一规则:...

第15条:使可变性最小化(创建不可改变类)

不可改变类是其实例对象不可改变,有人可能会想这还不简单,我们不提供改变对象 内部状态的API不就完了,没错,这是一个很重要的一条,但还有很多注意点 首先为什么要创建不可改变的类? 不可改变类比可...

2015070301 - EffactiveJava笔记 - 第52条 通过接口引用对象(1)

20150703 星期五 早晨    第40条建议,应该使用接口而不是类作为参数的类型;    一般而言,应该优先使用接口而不是类来引用对象.如果有合适的接口类型,那么参数,返回值,变量,域来说,...

2015070404 - EffactiveJava笔记 - 第57条 只对异常使用异常(1)

20150704 星期六 北京     猜测下面的代码意图是什么呢?     try {        int i =0;        while (true){          range[i+...

2015070303 - EffactiveJava笔记 - 第53条 接口优于反射机制

20150703 星期五 北京    反射机制,提供通过运行程序访问关于已经装载的类的信息的能力.    反射机制,允许一个类使用另外一个类,即使当前者被编译的时候后者还根本不存在.    反射...

2015062806 - EffactiveJava笔记 - 第41条 慎用重载(2)

----->02.基本类型和包装类导致的重载问题     java1.5之前,所有基本类型根本不同于所有的引用类型,但是引入自动拆箱和装箱,导致了真正的麻烦.     import java.ut...

2015062705 - EffactiveJava笔记 - 第38条 检查参数的有效性

第七章 方法     主要涉及方法的以下方面:如何处理参数和返回值,如何设计方法签名,如何为方法编写文档.适合普通方法和构造方法.    焦点集中在可用性,健壮性和灵活性上.      第38...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:2015070704 - EffactiveJava笔记 - 第15条 使可变性最小(1)
举报原因:
原因补充:

(最多只允许输入30个字)