不变模式

概述:

一个对象的状态在对象被创建之后就不再变化,这就是不变模式

弱不变模式:一个类的实例状态是不可变的,但这个类的子类的实例具有可能会变化的状态,实现弱不变性满足的条件:

1 对象没有任何方法修改对象的状态

2 对象的属性私有,客户端会对公开属性修改

3 对象所引用对象变化的话,必须限制外界对可变对象的访问。

缺点:1 弱不变对象的子对象可以是可变对像  2 可变的子对像可能修改父对象的状态

强不可变对象:类实例的状态不会改变,子类的实例具有不可变状态,必须满足弱不可变模式的所有要求,

1  类的所有方法是final

2 类本身是final

String  Ingeger  .....

时间: 2024-11-05 02:19:16

不变模式的相关文章

《JAVA与模式》之不变模式

一个对象的状态在对象被创建之后就不再变化,这就是所谓的不变模式. 不变模式的结构 不变模式可增强对象的强壮型(robustness).不变模式允许多个对象共享某一个对象,降低了对该对象进行并发访问时的同步化开销.如果需要修改一个不变对象的状态,那么就需要建立一个新的同类型对象,并在创建时将这个新的状态存储在新对象里. 不变模式只涉及到一个类.一个类的内部状态创建后,在整个生命周期都不会发生变化时,这样的类称作不变类.这种使用不变类的做法叫做不变模式.不变模式有两种形式:一种是弱不变模式,另一种是

65 不变模式2

主要的不变模式类型如下: ?java.lang.String ?java.lang.Boolean ?java.lang.Byte ?java.lang.Character ?java.lang.Double ?java.lang.Float ?java.lang.Integer ?java.lang. Long ?java.lang.Short 当这些变量的值被"改变的时候" 其实在内存中开辟了一个新的内存空间存储 ,假象看起来乜有改变而已.

JAVA设计模式之不变模式

在阎宏博士的<JAVA与模式>一书中开头是这样描述不变(Immutable)模式的: 一个对象的状态在对象被创建之后就不再变化,这就是所谓的不变模式. 不变模式的结构 不变模式可增强对象的强壮型(robustness).不变模式允许多个对象共享某一个对象,降低了对该对象进行并发访问时的同步化开销.如果需要修改一个不变对象的状态,那么就需要建立一个新的同类型对象,并在创建时将这个新的状态存储在新对象里. 不变模式只涉及到一个类.一个类的内部状态创建后,在整个生命周期都不会发生变化时,这样的类称作

不变模式-类行为型

原理 一个对象的状态在对象被创建之后就不再变化,这就是所谓的不变模式. 不变模式的结构 不变模式可增强对象的强壮型(robustness).不变模式允许多个对象共享某一个对象,降低了对该对象进行并发访问时的同步化开销.如果需要修改一个不变对象的状态,那么就需要建立一个新的同类型对象,并在创建时将这个新的状态存储在新对象里. 不变模式只涉及到一个类.一个类的内部状态创建后,在整个生命周期都不会发生变化时,这样的类称作不变类.这种使用不变类的做法叫做不变模式.不变模式有两种形式:一种是弱不变模式,另

并发程序开发及优化之不变模式

在并行软件开发过程中,同步操作似乎是必不可少的.当多线程对同一个对象进行读写操作时,为了保证对象数据的一致性和正确性,有必要对对象进行同步.而同步操作对系统性能有相当的损耗.为了尽可能的去除这些同步操作,提高并行程序性能,可以使用一种不可改变的对象,依靠对象的不变性,可以确保其在没有同步操作的多线程环境中依然保持内部状态的一致性和正确性.这就是不变模式. 不变模式天生就是多线程友好的,它的核心思想是,一个对象一旦被创建,则它的内部状态将永远不会发生改变.所以,没有一个线程可以修改其内部状态和数据

不变模式概要

设计理念 因为不需要进行同步操作,所以它是通过回避问题而不是解决问题的态度来处理并发控制的 构建不变模式的方法: 1.这个类本身就是final的,那么这个类就不可能会有子类,从而也就不可能有被子类修改的问题. 2.去除setter方法以及其他可以修改自身属性的方法. 不变和只读的区别 "不变"(Immutable)与"只读"(Read Only)是不同的.当一个变量是"只读"时,变量的值不能直接改变,但是可以在其他变量发生改变的时候发生改变.比如

设计模式-不变模式

不变模式 参考 一个对象的状态在对象被创建之后就不再变化,这就是所谓的不变模式. 不变模式的结构 不变模式可增强对象的强壮型(robustness).不变模式允许多个对象共享某一个对象,降低了对该对象进行并发访问时的同步化开销.如果需要修改一个不变对象的状态,那么就需要建立一个新的同类型对象,并在创建时将这个新的状态存储在新对象里. 不变模式只涉及到一个类.一个类的内部状态创建后,在整个生命周期都不会发生变化时,这样的类称作不变类.这种使用不变类的做法叫做不变模式.不变模式有两种形式:一种是弱不

了解什么是不变模式

不变模式 一).不变模式的概述 使用场景: 当多线程对同一个对象进行读写操作时,为保证对象数据的一致性和正确性,有必要对对象进行同步. 作用: 确保在没有同步操作的多线程环境中,保持对象内部状态的一致性和正确性 核心思想:一个对象一旦被创建,则它的内部状态将永远不会改变,同时,其内部状态也决不会自行发生改变. 二).不变模式与只读属性的区别 只读属性:对象本身不能被其他线程修改, 对象的自身状态却可能自行修改. 不变模式:没有一个线程可以修改其内部结构和数据,同时,其内部状态也 不会自行改变,即

3.3.5 高效读取:不变模式下的CopyOnWriteArrayList

源码分析:读写(get,add) 一:get 方法 private E get(Object[] a, int index) { return (E) a[index];}可以看到读取数据的时候 没有添加任何限制.和ArrayList的方法一致二:add 方法 1.public boolean add(E e) {2. final ReentrantLock lock = this.lock;3. lock.lock();4. try {5. Object[] elements = getArr