通常来是,一个对象要么是可变对象(Mutable Object),要么是不变对象(Immutable)
不变模式分类:
一、弱不变模式
弱不变模式:一个类的实例的状态是不可变化,但是这个类的子类的实例是具有可能会变化的状态。一个类 要实现弱不变模式,必须满足下面条件:
第一、所考虑的对象没有任何方法会修改对象的状态;
第二、所有的属性都应该是私有的。
第三、对象所引用的其他对象如果是可变对象的话,必须限制外界对这些可变对象的访问,防治外界修改这些对象。限制方法:A:在不变对象内部初始化这些可变对象的引用 B:在客户端初始化这些可变对象的引用,应当把可变对象的拷贝初始化给不可变对象。
二、强不变模式
强不变模式:一个类的实例的状态不会改变,同时这个类的子类的实例也具有不可变化的状态。这样的类符合强不变模式。一个类要实现强不变模式,必须满足下面条件:
第一、类的所有方法必须是final;
第二、类本身就是final
“不变”和“只读”的区别:
“不变”和“只读”是有不同,“只读”:当一个变量是“只读”时,它不能直接改变,但是可以通过其他变量的改变而改变。
例如:一个人的出生年月日是“不变”的属性,而一个人的年龄是“只读”属性,但是”不变“的属性,随着时间的变化,”只读“属性的年龄发生变化。
模式的应用:
不变模式在java中的应用,java.lang.String就是重要的应用。
分享到:
相关推荐
装饰模式是一种设计模式...通过阅读和理解《设计模式:可复用面向对象软件的基础》等经典书籍,以及像博客“设计模式——装饰模式”这样的在线资源,我们可以深入掌握并灵活运用装饰模式,提高代码的可维护性和扩展性。
### 设计模式精解——GoF 23种设计模式解析 #### 0. 引言 设计模式作为面向对象编程的重要组成部分,在软件工程领域扮演着至关重要的角色。本书《设计模式精解——GoF 23种设计模式解析》旨在深入浅出地介绍由...
### 设计模式精解——GoF 23种设计模式解析及C++实现源码 #### 引言 设计模式是软件工程领域中一个极为重要的概念,它代表着一系列被广泛接受的解决特定问题的方法。GoF(Gang of Four)所提出的23种设计模式更是...
### 设计模式精解——GoF 23种设计模式解析及C++实现源码 #### 0. 引言 设计模式是软件工程领域的一个重要概念,它提供了一种解决常见问题的方法论。GoF(Gang of Four)所提出的23种设计模式被视为面向对象设计的...
### 设计模式精解——GoF 23种设计模式解析及C++实现源码 #### 引言 设计模式是一套被反复使用、多数人知晓的、经过分类编目的、代码设计经验的总结。GoF(Gang of Four)所提出的23种设计模式,被认为是面向对象...
以下是关于JAVA设计模式中提及的四种模式——工厂模式、代理模式、迭代器模式以及责任链模式的详细说明。 1. **工厂模式**:工厂模式是一种创建型设计模式,它提供了一种创建对象的最佳方式。在工厂模式中,当创建...
### 设计模式精解——掌握设计模式 #### 面向对象设计的新视角 本书《设计模式精解——掌握设计模式》旨在从一个新的视角出发,深入探讨面向对象设计的核心概念和设计模式的应用,帮助读者更好地理解和掌握面向...
GOF(Gang of Four)的设计模式源自于Erich Gamma、Richard Helm、Ralph Johnson和John Vlissides合著的经典书籍《设计模式——可复用面向对象软件的基础》。这23种设计模式被广泛应用于各种编程语言中,以提高代码...
设计模式——模板方法模式模板方法模式(Template Method Pattern):定义一个操作中的算法骨架,将一些步骤延迟至子类中.模板方法使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤使用场景:当不变和可...
在Java编程领域,设计模式是解决常见问题的可重用解决方案,它们代表了软件设计的最佳实践。本项目“DesignPatternsDemo”旨在通过简洁的示例展示这些模式如何应用于实际编程中。下面,我们将深入探讨其中涉及的主要...
在本文中,我们将深入探讨两个常见的设计模式——工厂模式和门面模式,并结合GoF(Gang of Four)的设计模式理论,阐述它们在软件设计中的作用和重要性。 首先,工厂模式是一种创建型设计模式,它提供了一种创建...
装饰者模式是一种结构型设计模式,它允许向对象添加新的功能,同时保持类的结构不变。这种模式通过创建包含被装饰对象引用的简单类来达到目的。 **示例解释**:文中关于生日礼物的例子,就是通过装饰者模式来不断为...
解释器模式将描述怎样 在 有了一个简单的文法后, 使用模式设计解释这些语句。 在解释器模式里面提到的语言是指任 何解释器对象能够解释的任何组合。在解释器模式中需要定义一个代表 文法的命令类的等 级结构,也...
### 隐性之桥——GOF设计模式 将GOF设计模式比喻为一座隐性的“桥”,意味着它连接了Java基础知识与高级框架如J2EE之间的鸿沟。然而,这座桥之所以“隐性”,是因为许多初学者可能忽视了设计模式的重要性,直接投入...