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

设计模式(行为型)-状态模式

目录

定义

类图

角色

state:抽象状态对象​

ConcreteState:具体状态角色​

Context: 环境角色​

优缺点

优点​

缺点​

使用场景

代码示例

总结


定义

        状态模式允许一个对象在其内部状态改变时改变它的行为,从外部看来,对象仿佛修改了它的类。它是行为型设计模式的杰出代表,通过将对象的状态封装在不同的状态类中,使得对象的行为能够根据当前状态动态调整。例如,在一个游戏角色系统中,角色可能处于正常、奔跑、跳跃、受伤等多种状态。当角色从正常状态切换到奔跑状态时,其移动速度、动画表现等行为都会随之改变,这正是状态模式的生动体现。

        状态模式与策略模式堪称 “亲兄弟”,但二者存在关键区别:策略模式着重于让对象在运行时选择不同的策略来执行特定功能;而状态模式则强调对象在不同状态下自动改变行为,状态的切换驱动着行为的变化。​

类图

角色

  • state:抽象状态对象​
  • 抽象状态对象是状态模式的基石,它负责定义对象的状态,并封装了环境角色以实现状态转换。通常以抽象类或接口的形式存在,为具体状态角色提供统一的行为接口。在这个抽象层面,虽然不涉及具体的行为实现,但规定了所有具体状态类必须实现的方法,这些方法涵盖了在该状态下对象可能执行的各种操作。例如,在一个文档审批系统中,抽象状态类可能定义了 “提交审批”“批准”“拒绝” 等方法,不同的具体状态(如 “待审批状态”“审批通过状态”“审批拒绝状态”)将根据自身逻辑实现这些方法。​

  • ConcreteState:具体状态角色​
  • 具体状态角色是抽象状态的具体实现,承担着两项重要职责。其一,管理本状态下对象的行为,即实现抽象状态类中定义的方法,以符合该状态下对象应有的行为表现。比如在一个电商订单系统中,“已支付状态” 的具体状态类会实现 “发货” 方法,而 “未支付状态” 的具体状态类则可能将 “发货” 方法实现为空操作或者抛出提示用户先支付的异常。其二,负责趋向状态管理,也就是定义本状态如何过渡到其他状态。例如,在 “已支付状态” 下,当用户取消订单时,可能会切换到 “订单取消状态”。每个具体状态类都专注于自身状态相关的逻辑,使得代码的职责更加清晰,易于维护和扩展。​

  • Context: 环境角色​
  • 环境角色是状态模式中的核心协调者,它定义了客户端所需要的接口,客户端通过与环境角色交互来间接操作对象的状态和行为。环境角色内部维护着一个当前状态的引用,这个引用指向具体的状态对象。当客户端调用环境角色的方法时,环境角色会将请求委托给当前的状态对象进行处理。同时,环境角色还负责具体状态的切换,当满足特定条件时,它会改变当前状态的引用,使对象切换到新的状态,从而自动改变对象的行为。以一个自动售货机为例,售货机本身就是环境角色,它维护着机器的当前状态(如 “

相关文章:

  • Leetcode 刷题笔记1 单调栈part01
  • UART转AHB模块ModelSim仿真
  • C语言每日一练——day_10
  • 冒泡排序:古老算法中的智慧启示
  • c++学习系列----003.写文件
  • MySQL——数据类型
  • Postman 新手入门指南:从零开始掌握 API 测试
  • 嵌入式Linux | 什么是 BootLoader、Linux 内核(kernel)、和文件系统?
  • 基于javaweb的SpringBoot智能相册管理系统图片相册系统设计与实现(源码+文档+部署讲解)
  • 音视频处理的“瑞士军刀”与“积木”:FFmpeg 与 GStreamer 的深度揭秘
  • 【系统架构设计师】操作系统 - 文件管理 ③ ( 树形目录结构 | 文件属性 | 绝对路径 与 相对路径 )
  • C++类:特殊的数据成员
  • Linux环境使用jmeter做性能测试
  • 全球化2.0 | ZStack云计算系统工程师(ZCCE)国际认证培训成功举办
  • win10 c++ VsCode 配置PCL open3d并显示
  • 猎豹移动(Cheetah Mobile)
  • 【Unity】TextMesh Pro显示中文部分字体异常
  • 基于FPGA的3U机箱模拟量高速采样板ADI板卡,应用于轨道交通/电力储能等
  • 游戏引擎学习第157天
  • LeRobot源码剖析——对机器人各个动作策略的统一封装:包含ALOHA ACT、Diffusion Policy、VLA模型π0
  • 人民日报:在大有可为的时代大有作为
  • 中国公民在日本被机动车碾压身亡,我使馆发布提醒
  • 宁波银行一季度净利74.17亿元增5.76%,不良率持平
  • 人民日报头版:上海纵深推进浦东高水平改革开放
  • 2025上海车展的三个关键词:辅助驾驶、性价比,AI生态
  • 因高颜值走红的女通缉犯出狱后当主播自称“改邪归正”,账号已被封