一个对象的状态在对象被创建之后就不再变化,这就是所谓的不变模式
不变模式只设计到一个类,一个类的内部状态创建后,在整个生命周期都不会发生变化时,这样的类就叫不变类,使用不变类的做法就叫做不变模式。
不变模式有两种形式:弱不变模式,强不变模式
弱不变模式:一个类的实例状态是不变的,但是这个类的子类实例具有可能会变化的状态。
强不变模式:一个类的实例状态是不变的,这个类的子类实例也具有不可变化的状态。实现的途径是类所有的方法都是 final类型,或者类本身就是final的
“不变”和“只读”的区别:
“不变”和“只读”是有不同,“只读”:当一个变量是“只读”时,它不能直接改变,但是可以通过其他变量的改变而改变。
例如:一个人的出生年月日是“不变”的属性,而一个人的年龄是“只读”属性,但是”不变“的属性,随着时间的变化,”只读“属性的年龄发生变化。
- public class BClass {
-
private int state = 0;
-
-
public int getState(){
-
return this.state;
- }
-
-
public void setState(){
-
System.out.println("Parameter is " + this.state);
- }
- }
public class BClass {
private int state = 0;
public int getState(){
return this.state;
}
public void setState(){
System.out.println("Parameter is " + this.state);
}
}
这个类是个弱不变类,这个类有一个状态,存储在Int原始类型的state属性里面, 粗看上去有个方法setState(), 但是这个方法实际上并不能修改state,所以该类实际是个不变类。但是该类的子类可以修改state,因为setState()方法不是final,而且类也不是final类,所以该类是弱不变类。
分享到:
相关推荐
行为模式关注对象间的职责分配。 1. **Template Method模式** - **定义**:定义一个操作中的算法的骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 - **...
行为模式 ##### 3.1 Template模式 - **定义**:模板方法模式定义一个操作中的算法骨架,而将一些步骤延迟到子类中。 - **应用场景**:当算法的步骤相同,但某些步骤的实现不同,或者当需要确保一个算法的不变的...
模板方法模式是设计模式中行为型模式的一种,它在软件工程中扮演着非常重要的角色,尤其是在Java编程中。模板方法模式定义了一个操作中的算法骨架,而将一些步骤延迟到子类中。它允许子类不改变一个算法的结构即可重...
这种模式的核心思想是通过将对象封装在一个装饰器对象内,来扩展对象的功能,同时保持原有接口的不变,从而实现对对象功能的灵活扩展。 在Java、C#等面向对象编程语言中,装饰者模式通常涉及四个主要角色: 1. **...
装饰模式是一种结构型设计模式,它允许在运行时动态地给对象添加新的行为或职责,同时保持对象的接口不变。这种模式使得我们可以在不修改原有代码的基础上,通过组合不同的装饰来扩展对象的功能,实现了代码的高可...
模板方法模式是面向对象设计中的一种行为型模式,它的主要目的是定义一个操作中的算法骨架,同时允许子类在不修改整体结构的情况下重定义算法的某些特定步骤。这种模式遵循开闭原则,即对扩展开放,对修改关闭。 ...
通过将不变的部分抽象出来作为模板,而允许子类重新定义某些步骤的行为,从而达到代码复用的目的。本文将详细介绍模板方法模式的基本概念、工作原理以及其实现方式。 #### 二、背景与问题 在给定的PPT内容中,首先...
行为模式关注的是对象间的职责分配。 - **3.1 Template Method模式**:定义一个操作中的算法骨架,而将一些步骤延迟到子类中。使得子类可以不改变一个算法的结构即可重定义该算法的某些特定步骤。 - **应用场景**...
- **应用场景**:一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现;各子类中公共的行为应被提取出来并集中到一个公共父类中以避免代码重复。 - **优缺点**:优点在于封装了不变部分,扩展可变行为,...
在当前的互联网时代,电商行业已经发展到一个全新的阶段,其中“网红带货”成为了一种备受关注的新模式。这种模式结合了社交媒体的力量和电子商务的便捷性,为商家和消费者搭建了一个新的互动桥梁。本文将从网红带货...
通过使用模板模式,我们能够封装不变的部分并公开可变的部分,从而提高代码的复用性和可扩展性。例如,我们可以创建一个打印报告的抽象类,其中模板方法定义了报告生成的整体流程,包括获取数据、格式化数据和输出...
模板方法模式是面向对象设计模式的一种,它在行为模式中占据重要地位。此模式的核心思想是定义一个操作的框架,允许子类在这个框架内自定义具体的行为。这为代码复用和实现相同逻辑的不同实现提供了方便,同时也遵循...
在"游戏设计3-装饰者模式-装备"这个主题中,我们主要关注的是如何利用装饰者模式来设计和管理游戏中的装备系统。装饰者模式的核心思想是将一个对象包装在一个装饰器对象中,装饰器对象拥有与原对象相同的接口,这样...
在"3 模板模式-课程内容.rar"中,我们可能可以看到对模板模式的深入讲解。其中,"3 模板模式-MOOC课程内容.pdf"可能是课程资料,它可能包含以下内容: 1. **模板模式的基本概念**:解释什么是模板模式,它的主要...
装饰者模式是一种比继承更灵活的扩展对象行为的方式,它避免了类爆炸问题,使得系统更加可维护和可扩展。 在装饰者模式中,通常包含以下四个关键角色: 1. 抽象组件(Component):定义了被装饰对象的接口,这样...
在深度学习和机器学习中,神经网络被用作数据建模的工具,通过对复杂输入数据的处理,实现模式识别和预测。 中立型Cohen-Grossberg神经网络包含了增益放大(αi(·))和行为调整(βi(·))两个关键概念,它们反映...
- **适用性**:一次性实现一个算法的不变的部分,并将可变的行为留给子类来实现。 11. **访问者模式**: - **定义**:表示一个作用于某对象结构中的各元素的操作。它使你可以在不改变各元素的类的前提下定义作用...