• 第十五条:使可变性最小化


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

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

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

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

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

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

    3.使所有的域都是final的

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

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

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

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

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

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

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

  • 相关阅读:
    百度地图常用 获取中心点 缩放级别等
    sqlserver 临时表,多用户同时访问冲突吗?
    批量改ID 行形式
    C# post Json数据
    windows 激活venv问题
    spring 改变url
    conductor编译镜像
    springboot教程
    Microsoft Visual C++ Compiler for Python 2.7
    java 方法引用(method reference)
  • 原文地址:https://www.cnblogs.com/wangliyue/p/4460741.html
Copyright © 2020-2023  润新知