0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

设计模式行为型:状态模式

冬至子 来源:码农架构 作者:小智 2023-06-07 11:20 次阅读

在状态模式(State Pattern)中,类的行为是基于它的状态改变的。这种类型的设计模式属于行为型模式。

在状态模式中,我们创建表示各种状态的对象和一个行为随着状态对象改变而改变的 context 对象。

对象的行为依赖于它的状态(属性),并且可以根据它的状态改变而改变它的相关行为。

结构图

图片

结角色与理解

  • 状态模式共分为三种角色:
  • Context(上下文环境):将自身的状态与行为分离出去,封装成状态类,持有抽象状态类的引用,根据自身属性变换更换具体状态类。
  • State(抽象状态类):具体状态类的抽象,可以持有上下文环境的引用来更换状态。
  • Concrete State(具体状态类):实现不同状态下的不同行为。
  • 上下文环境引用抽象状态类完成行为的调用,状态类的状态变化可以有上下文环境处理,也可以由状态类处理。
  • 状态类可以共享,像开关对象一样,可以被多个上下文环境引用。

核心代码

抽象状态类

图片

具体状态类

图片

状态类

图片

客户端

图片

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 状态机
    +关注

    关注

    2

    文章

    486

    浏览量

    27166
收藏 人收藏

    评论

    相关推荐

    用C语言实现状态机设计模式

    状态模式是一种行为模式,在《设计模式》这本书中对其有详细的描述,通过多态实现不同状态的调转
    发表于 12-14 13:38 2545次阅读

    【设计技巧】LabVIEW程序设计模式(二)—基本状态模式

    状态机是一种最为经典的程序设计模式,在LabVIEW 7.1(含)之前它几乎包揽了大部分的LabVIEW主程序。最基本的状态机结构如图 1所示。状态
    发表于 08-06 08:30

    基于入侵行为模式的告警关联

    本文提出了一种基于入侵行为模式的告警关联方式。入侵行为模式是定义在时间基础上的一组谓词公式,其实质是通过时间限制联系在一起的入侵事件的集合。该方法在对大量告
    发表于 08-13 08:35 6次下载

    基于多模式匹配的状态检测技术

    提出了一种基于多模式匹配的状态检测方案,借助网络处理器PowerPC MPC8572E 的模式匹配模块及其状态规则引擎,能够针对包含多种特征信息的协议,检测出协议所
    发表于 06-22 16:38 21次下载
    基于多<b class='flag-5'>模式</b>匹配的<b class='flag-5'>状态</b>检测技术

    行为模式高频切换下尺度指纹步态算法_王仕亮

    行为模式高频切换下尺度指纹步态算法_王仕亮
    发表于 01-08 14:36 0次下载

    状态模式(状态机)

    以前写状态机,比较常用的方式是用 if-else 或 switch-case,高级的一点是函数指针列表。最近,看了一文章《c语言设计模式状态模式(
    发表于 12-16 16:53 7次下载
    <b class='flag-5'>状态</b><b class='flag-5'>模式</b>(<b class='flag-5'>状态</b>机)

    设计模式最佳实践探索—策略模式

    根据不同的应用场景与意图,设计模式主要分为创建型模式、结构型模式行为模式三类。本文主要探索行为
    的头像 发表于 10-31 14:24 708次阅读

    设计模式:备忘录设计模式

    备忘录设计模式(Memento Design Pattern)是一种行为型设计模式,它的主要目的是在不破坏对象封装性的前提下,捕捉和保存一个对象的内部状态
    的头像 发表于 06-06 11:19 611次阅读

    设计模式行为型:中介模式

    提供一个中介者完成对一系列操作的封装,降低对象间的系统耦合度。中介者模式又称为调停者模式
    的头像 发表于 06-06 17:42 548次阅读
    设计<b class='flag-5'>模式</b><b class='flag-5'>行为</b>型:中介<b class='flag-5'>模式</b>

    设计模式行为型:备忘录模式

    备忘录模式(Memento Pattern)保存一个对象的某个状态,以便在适当的时候恢复对象。备忘录模式属于行为模式
    的头像 发表于 06-07 11:16 588次阅读
    设计<b class='flag-5'>模式</b><b class='flag-5'>行为</b>型:备忘录<b class='flag-5'>模式</b>

    设计模式行为型:策略模式

    在策略模式(Strategy Pattern)中,一个类的行为或其算法可以在运行时更改。这种类型的设计模式属于行为模式
    的头像 发表于 06-07 11:18 434次阅读
    设计<b class='flag-5'>模式</b><b class='flag-5'>行为</b>型:策略<b class='flag-5'>模式</b>

    设计模式行为型:模板方法模式

    在模板模式中,一个抽象类公开定义了执行它的方法的方式/模板。
    的头像 发表于 06-07 15:13 402次阅读
    设计<b class='flag-5'>模式</b><b class='flag-5'>行为</b>型:模板方法<b class='flag-5'>模式</b>

    设计模式行为型:观察者模式

    定义对象之间的一种一对多依赖关系,使得每一个对象发生状态的变化时,其相关依赖对象皆得到通知并被自动更新,又称为发布-订阅模式、模型-视图模式、源-监听器模式或从属者
    的头像 发表于 06-07 16:56 465次阅读
    设计<b class='flag-5'>模式</b><b class='flag-5'>行为</b>型:观察者<b class='flag-5'>模式</b>

    c语言设计模式--状态模式(状态机)

    状态模式(状态机)是嵌入式开发中最重要、最核心的设计模式之一,毫不夸张的说,是否熟练掌握状态模式
    的头像 发表于 06-14 15:28 630次阅读
    c语言设计<b class='flag-5'>模式</b>--<b class='flag-5'>状态</b><b class='flag-5'>模式</b>(<b class='flag-5'>状态</b>机)

    行为型设计模式在UVM中的应用

    接下来介绍行为型设计模式在UVM中的应用。
    的头像 发表于 08-09 14:01 402次阅读
    <b class='flag-5'>行为</b>型设计<b class='flag-5'>模式</b>在UVM中的应用