zoukankan      html  css  js  c++  java
  • 第十五条:使可变性最小化

    不可变类只是其实例不能被修改的类。每个实例所包含的信息必须在创建该实例的时候就提供,并在对象的整个生命周期内固定不变。

    JDK中已经包含了许多不可变的类,其中有String,基本类型包装类,BigInteger,和BigDecimal。

    存在不可变的类的类有许多理由:不可变的类比可变类更加易于设计,实现和使用。它们不容易出错,且更加安全。

    为了使类成为不可变的,需要遵循下面五条规则:

    1.不要提供任何会修改对象状态的方法

    2.保证类不会被扩展。为了防止子类化,一般的做法是使这个类成为final的。

    3.使所有的域都是final的

    4.使所有的域都是私有的

    5.确保对于任何可变组件的互斥访问。如果这个类具有指向可变对象的域,要确保该类的客户端无法获得这些可变域的引用。

    不可变对象 比较简单,不可变对象只有一种状态,即被创建时的状态。

    不可变对象本质上是线程安全的,它们不要求同步。

    不可变对象真正的缺点是:对于每个不同的值,都需要一个单独的对象。如果你执行一个多步骤的操作,并且每个步骤都会产生一个新

    的对象,除了最后的结果之外其他的对象最终都会被丢弃。一般这种不可变类,有一个公有的可变配套类。JDK中有这样的例子:String类

    是不可变类,它的可变配套类是StringBuilder类。

  • 相关阅读:
    Javap课堂练习——接口与继承
    课堂练习——数组
    Java课堂练习——string
    软件工程作业01
    登录界面连接数据库
    软件工程概论第一周学习进度
    06构建之法读书笔记——需求分析
    05构建之法读书笔记——用户体验
    04构建之法读书笔记——IT行业的创新
    03读构建之法读书笔记——团队和流程
  • 原文地址:https://www.cnblogs.com/wangliyue/p/4460741.html
Copyright © 2011-2022 走看看