当前位置: 首页 > news >正文

java 设计模式_行为型_23状态模式

23.状态模式
Java中的状态设计模式是一种软件设计模式,当对象的内部状态更改时,该模式允许对象更改其行为。状态设计模式通常用于以下情况:对象取决于其状态,并且在运行期间必须根据其内部状态更改其行为。状态设计模式是许多行为设计模式之一,因此表征了运行时难以遵循的对象之间的控制流。状态封装是管理软件变更的绝佳方法。在本文中,我们将讨论状态设计模式动机的关键方面,描述状态动机,提及实现该动机的关键参与者,并使用代码示例来演示其用法。

Java中的状态设计模式示例
在继续演示Java状态设计模式的代码示例之前,让我们首先了解什么是我们需要更好理解示例的关键类(参与者)。

上下文界面
上下文定义一个接口,该接口维护定义当前状态的ConcreteState子类的实例。

状态界面
状态定义了一个接口,用于封装与上下文的特定状态关联的行为。

ConcreteState子类
如前所述,具体状态子类可以被视为连接对象处于(建立,聆听或关闭)状态的实例。它们实现了上下文状态的行为。

Java示例中的状态设计模式
我们将演示游戏开始和暂停功能的高度简化版本。实现如下:

UML用例图

1、状态界面

public interface State {void doAction(Context context);
}

2.上下文

@AllArgsConstructor
@NoArgsConstructor
@Data
public class Context {private State state;}

3.具体状态

public class StartState implements State {@Overridepublic void doAction(Context context) {System.out.println("Game start");context.setState(this);}public String toString(){return "start";}
}public class StopState implements State {@Overridepublic void doAction(Context context) {System.out.println("Game pause");context.setState(this);}public String toString(){return "stop";}}

4.测试类

public class StateTest {public static void main(String[] args) {Context context = new Context();StartState startState = new StartState();startState.doAction(context);System.out.println(context.getState().toString());StopState stopState = new StopState();stopState.doAction(context);System.out.println(context.getState().toString());}
}

相关文章:

  • 论文笔记:CAN LLMS UNDERSTAND TIME SERIES ANOMALIES?
  • Kafka Connect实战:从环境搭建到全流程操作
  • solana 编写智能合约 然后调用它
  • C#/.NET/.NET Core技术前沿周刊 | 第 42 期(2025年6.9-6.15)
  • Debian 编译安装 ruby3.2
  • webpack到vite的改造之路
  • SOME/IP学习随笔
  • Trae - 非科班在建模比赛中的 AI 编程手|AI编程社知识库精选
  • vscode snippet 工程模板文件分享
  • 【SSH】在VScode中配置SSH
  • 一次硬件恢复之后数据文件0kb的故障恢复---惜分飞
  • 本地生活是如何进行抽佣的
  • 19|Whisper+ChatGPT:请AI代你听播客
  • Flask 快速精通:从入门到实战的轻量级 Web 框架指南
  • git submodule 和git repo介绍
  • 告别微服务,迎接SCS(Self-Contained Systems)?新概念还是炒冷饭?
  • 算法 学习 排序 2025年6月16日10:25:37
  • MySQL 命令行的核心操作命令详解
  • 始理解NLP:我的第一章学习心得
  • SQL注入漏洞-下篇
  • 如何给国外网站做seo/关键词如何排名在首页
  • 手机端企业网站设计/网站建设seo
  • 东莞网站建设推广服务/seo站内优化包括
  • 给别人做网站赚钱吗/2020最近的新闻大事10条
  • 永久免费手机网站建设/百度推广需要什么条件
  • 百科网站开发/广州白云区今天的消息