19 行为模式 - 状态(State)模式

1.用意

状态模式允许一个对象在其内部状态改变的时候改变其行为。这个对象看上去就像是改变了它的类一样。

 

2.类图


 

3.代码

/*
 * 环境角色
 */
public class Context {
	private State state;

	public void sampleOperation() {
		state.sampleOperation();
	}

	public void setState(State state) {
		this.state = state;
	}
}

/*
 * 抽象状态
 */
public interface State {
	void sampleOperation();
}


/*
 * 具体状态类A
 */
public class ConcreteStateA implements State {
	public void sampleOperation() {
		S.s("ConcreteState::A");
	}
}


/*
 * 具体状态类B
 */
public class ConcreteStateB implements State {
	public void sampleOperation() {
		S.s("ConcreteState::B");
	}
}


/*
 * 测试类
 */
public class Test {

	public static void main(String[] args) {
		Context c = new Context();
		c.setState(new ConcreteStateA());
		c.sampleOperation();
		c.setState(new ConcreteStateB());
		c.sampleOperation();
	}
}
 

 

z

实战避坑:在Ubuntu 22.04上配置NVIDIA GPU Direct RDMA时,必须搞清的P2P DMA与IOMMU那些事 本文深入探讨在Ubuntu 22.04上配置NVIDIA GPU Direct RDMA时P2P DMA与IOMMU的关键问题,解析PCIe架构中的地址转换、P2P DMA与标准DMA的区别,以及IOMMU对性能的影响。通过实战案例和调优建议,帮助用户避免常见配置陷阱,提升AI训练集群的数据传输效率。 阅读详情

相关推荐

手把手教你自制Type-C OTG转换器(附电路图及避坑指南)

本文详细指导如何自制Type-C OTG转换器,包括核心电路设计、元器件选型及焊接技巧,特别强调硬件检测电路的关键作用。通过实测数据和避坑指南,帮助开发者解决兼容性问题,实现高效数据传输。

weixin_27038245的博客 716

【第15节】C++设计模式(行为模式)-State(状态)模式

状态模式的应用场景主要包括:(1)行为依赖状态:对象行为随状态动态变化时,如电梯、订单状态。(2)消除条件分支:减少大量条件语句,如游戏角色行为、交通灯状态。(3)复杂状态转换:状态转换逻辑复杂时,如工作流任务、线程生命周期。(4)多状态共存:对象同时处于多个状态时,如文件状态、用户权限。(5)状态与行为解耦:将状态和行为分离,如网络连接、播放器状态。(6)状态历史记录:支持状态记录和回滚,如文本编辑器撤销、事务回滚。(7)状态可扩展性:方便添加新状态,如游戏角色状态、设备状态。

攻城狮7号的博客 1235

Unity插件-Mirror使用方法(一)Mirror介绍

Unity Mirror 是一个专为 Unity 引擎设计的开源、社区驱动的网络库,主要用于简化多人联机游戏的开发。它最初是为了替代 Unity 原生的 UNet 系统(已被官方弃用)而创建的,因其轻量、灵活和高效的特点,成为 Unity 开发者构建多人游戏的热门选择。

qq_44501691的博客 4101

状态(State)模式

文章目录状态(State)模式1. 意图2. 别名3. 动机4. 适用性5. 结构6. 参与者7. 协作8. 效果9. 实现10. 代码示例11. 已知应用12. 相关模式13. 设计原则口袋14. 参考文献 状态(State)模式 隶属类别——对象行为模式 1. 意图 允许一个对象在其内部状态发生改变时改变它的行为。对象看起来似乎修改了它的类。 2. 别名 状态对象(Object for St...

qq_38636211的博客 1198

修改Avaya IP-Office电话交换机出厂自带的提示语音内容

1,本文的应用场景是在使用Avaya IP-office 500 v2电话交换机时,来电振铃超时后,会转入语音信箱,呼叫者会听到一条语音信箱留言的欢迎辞(…请留言…)。但我们单位情况比较特殊,首先是的IPO配置很精简,内嵌的语音信箱只能保留3天,用处不大;其次是用户没有收听语音信箱的习惯;第三是我们单位使用数字中继和DID,每人一个直拨号码,不通过总机转接。很多业务是单线联系,所以一旦来电无法接通,来电者可能完全无法联系到我们单位的其他同事。出于这三点原因,我们希望将语音信箱的欢迎辞,增加告知我们的总机电话

qlin4cn的博客 4920

在 SAP BTP 中通过 MTA 自动创建 Service Broker 的原理与实战

本文探讨了如何在SAP BTP的Cloud Foundry环境中通过MTA部署自动创建和注册Service Broker。传统手动注册方式存在依赖管理员、环境一致性差等问题。通过MTA部署可实现自动化Broker注册,利用占位符生成安全凭证,并确保平台端与应用端认证一致。文章详细解析了关键配置参数,包括create-service-broker标志、Broker名称、认证凭据和访问URL的设置方法。这种基础设施即代码(IaC)方式能提升DevOps实践水平,使服务注册成为应用部署流水线的有机组成部分。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 201

状态模式(State Pattern) – 设计模式之行为模式

状态模式(State Pattern) – 设计模式之行为模式: 状态模式(State Pattern) 定义: Allow an object to alter its behavior when its internal state changes. The object will appear to change its class. 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类。 主要解决的是当控制一个对象状态转换的条件表达式过于复杂时的情况,把状态的判...

一路向前 658

vue2/3 - H5 移动端网页中调用手机摄像头扫描二维码 / 条形码功能,在h5手机网页里调起相机摄像头进行二维码或条形码扫描效果详细教程(详细示例组件源码,一键复制开箱即用!)

vue扫描二维码条形码,vue网页调用摄像头扫二维码条形码,vue移动端如何实现调用相机扫描二维码,vue移动端扫一扫功能,vue怎么做移动端h5扫一扫功能,vue识别二维码和条形码,vue实现点击按钮调用摄像头扫码,vue调用本地摄像头实现拍照功能,Vue中如何进行二维码生成与扫描,如何实现vue在手机浏览器中调用摄像头实现扫描二维码功能,VUE项目移动端H5调用摄像头扫码,vue项目中实现H5调取摄像头,网页调用摄像头实现二维码扫描功能,vue调用手机摄像头,vue在调用摄像头扫码,vue自定义打开摄像

✅ 精选推荐文章 1万+

erlang四大行为模式

文章有转载复制其他博客内容,如有侵权,请联系删除首先来简单说下 行为模式, ****是面向进程编程中各种常见模式的一种形似化表述.OTP行为模式 将 一些反复出现的模式分成了两部分:和, 二者通过一套简单明确的接口进行通信.init/gen_server。

qq_37232457的博客 1629

我装了10个ClawHub技能,这些最好用!

ClawHub就是Clawdbot的"应用商店"。Clawdbot是手机ClawHub是App Store技能就是各种App装了技能,Clawdbot才能干更多事。这个技能解决了我的信息过载问题。为什么装我订阅了很多Newsletter。每天收到一堆长文章,根本看不完。怎么用“总结这篇文章的核心观点”“把这个Newsletter提炼成3个要点”“这篇技术博客有哪些可以实践的建议?安装命令真实体验现在我收到长文章,直接转发给Clawdbot。它会提炼出核心要点和行动清单。

Maynor的博客 6105

Geogebra中级篇016—矩阵(Matrices)

在GeoGebra中,矩阵是一种强大的工具,广泛应用于线性代数、几何变换和数据处理等领域。通过矩阵,我们可以轻松实现复杂的计算和图形变换,如旋转、平移和缩放等操作。不仅如此,GeoGebra的矩阵功能还支持多种运算,如加法、乘法、求逆等,使得用户能够高效地处理线性方程组和向量空间问题。在本文中,我们将深入探讨GeoGebra中的矩阵功能,详细介绍如何创建矩阵、执行常见的矩阵运算,并通过实例展示这些操作在数学和工程应用中的实际价值。这篇文章将为你提供关于GeoGebra矩阵操作的全面指南。

八荒启-交互动画的博客 2585

状态模式——State (更好的实现状态机)

1. 概述     The intent of the STATE pattern is to distribute state-specific logic across classes that represent an object’s state.     STATE 设计模式的目的 是:将特定状态相关的逻辑分散到一些类的状态类中。  ...

chuanwang66的专栏 2352

SAP 系统间信任关系配置全攻略:从 SM59 到 SMT1 的实践与风险控制

本文介绍了在SAP系统间配置信任关系的详细流程与最佳实践。文章以SAP Gateway与后端系统架构为场景,从SM59创建RFC目的地开始,到SMT1建立信任关系,再到授权对象S_RFCACL的配置,提供了完整的操作指南。重点包括:使用标准命名规范创建专用RFC连接、通过向导完成系统间信任登记、严格控制S_RFCACL授权范围等。文中还分享了真实项目案例、可复用的检查清单以及常见问题的排查思路,帮助用户实现稳定可靠的跨系统无密码调用,同时确保安全性。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 325

设计模式学习(五):State状态模式

在面向对象编程中,是用类表示对象的。也就是说,程序的设计者需要考虑用类来表示什么东西。类对应的东西可能存在于真实世界中,也可能不存在于真实世界中。在State模式中,我们用类来表示状态。在现实世界中,我们会考虑各种东西的“状态”,但是几乎不会将状态当作“东西”看待。因此,可能大家很难理解“用类来表示状态”的意思。在本文中,我们将要学习用类来表示状态的方法。以类来表示状态后,我们就能通过切换类来方便地改变对象的状态。当需要增加新的状态时,如何修改代码这个问题也会很明确。

m0_49499183的博客 3175

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

【c++设计模式23】行为模式8:状态模式(State Pattern)

状态模式是一种行为型设计模式,它允许对象在内部状态发生改变时改变其行为。状态模式将对象的状态封装成不同的类,并将每个状态抽象为一个接口。当对象的内部状态发生改变时,它会自动切换到相应的状态对象,并执行相应的行为。状态模式将对象的行为和状态解耦,使得状态可以独立变化,而不影响到客户端的代码。

junxuezheng的博客 1091

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

[设计模式]行为模式-状态模式(C++描述)

 [设计模式]行为模式-状态模式(C++描述)second60 201805091. 什么是状态模式对于一些人或事特,会有不同状态,而一个状态会在不同的表现下转移到下一个状态。通常情况下,我们可能写个if..else语句进行判断,或switch语句进行判断,但是当状态越来越多时,代码将变得不可维护,可读性和扩展性变得很差。同时,状态逻辑和动作逻辑没有分离。而状态模式正是解决这样的问题。状态模式,使...

second60的博客 384

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

State(状态)模式

State模式是一种很常见的模式。尤其在通信领域,很多的协议都有一个状态机来维持协议的运转。而State模式正是实现状态机的绝佳武器。 State模式允许一个对象在其内部状态发生改变时表现不同的行为。举个例子,大家都知道TCP状态机。当TCP连接处于Closed和Established这两种状态时,如果收到一个SYN包,它们的行为是不一样的。处于Closed状态的TCP连接会执行被动打开

JwLee的专栏 1504

C++设计模式行为模式———状态模式

如果对象需要根据自身当前状态进行不同行为, 同时状态的数量非常多且与状态相关的代码会频繁变更的话, 可使用状态模式。如果某个类需要根据成员变量的当前值改变自身行为,从而需要使用大量的条件语句时,可使用该模式。状态模式很好的遵守了单一职责原则和开闭原则。将与特定状态相关的代码放在单独的类中,并且无需修改已有状态类和上下文就能引入新状态。通过消除臃肿的状态机条件语句简化上下文代码。

无敌岩雀的博客 2234

创建模式、结构模式及行为模式

设计模式

和风化雨 1961

状态模式(State)

意图:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。

QQ657205470的博客 802

设计模式24:State Pattern (状态模式)

英文原文:http://www.dofactory.com/Patterns/PatternState.aspx一、State Pattern (状态模式)Define: Allow an object to alter its behavior when its internal state changes. The object will appear to change its cl

薛敬明的专栏 1898

行为模式:设计模式中的行为模式详解

行为模式是设计模式的核心部分,专注于对象间的交互与职责分配,提升系统灵活性和可维护性。本文介绍了三种典型行为模式:观察者模式(一对多状态通知机制,适用于事件驱动系统)、策略模式(封装算法使其可互换,支持动态选择)和责任链模式(构建处理链解耦请求与处理者)。每种模式均配以C++示例代码,展示其实际应用场景和实现方式,如观察者模式的消息通知、策略模式的支付方式切换等。这些模式通过规范化对象协作方式,有效减少代码冗余,增强系统扩展性。

软件科学-郝学胜 807

状态模式——State 更好的实现状态机

状态模式——State 更好的实现状态机

qq_44945094的博客 513

设计模式之状态STATE模式(C++)

状态模式:属于行为型模式的其中一种,其允许一个对象在内部改变状态时改变它的行为,对象看起来似乎修改了它的类。 状态模式主要解决的是当控制一个对象的状态转换条件表达式过于复杂时的情况,把状态的逻辑判断转移到表示不同状态的一系列类中,可以把复杂的判断逻辑简化。好处就是讲于特定状态相关的行为局部化,并且将不同的状态行为分割开来。比如说我们有一个DoSomeThing的函数,该函数内有大量的if els

hailong0715的专栏 3236

设计模式-15-状态模式 State -[行为模式]

1.状态模式简介 当一个对象的内在状态改变时允许改变其行为,这个对象看起来像是改变了其类; 当状态改变时,这个对象的行为也会变,而看起来就像是这个类改变了一样。 2.举例说明 案例:城市的纵向发展离不开电梯,就以电梯为例。 状态\动作 开门 关门 运行 停止 开门状态 X O X X 关门状态 O X O O 运行状态 X X X O 停止状态 O X...

心要是孤单了,到了那里都是流浪~~~ 310

State模式

State模式 一、效果: 允许一个对象在其内部状态改变时改变它的行为,对象看起来似乎修改了它的类。 二、适用性: 1、一个对象的行为取决于它的状态,并且它必须在运行时刻根据状态改变它的行为。 2、一个操作中含有庞大的多分支条件语句,且这些分支依赖于该对象的状态。State模式将每一个条件分支放入一个独立 的类中,这使

yangchuankai's blog 939
上一篇: 18 行为模式 - 备忘录(Memento)模式
下一篇: 20 行为模式 - 访问者(Visitor)模式
O2AtomLife
博客等级 码龄19年 2粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值