设计模式之状态模式

设计模式之状态模式是一种行为型设计模式,它允许一个对象在其内部状态改变时改变它的行为。以下是状态模式的详细说明及其应用场景:

状态模式详细说明

  1. 定义:状态模式是对有状态的对象,把复杂的"判断逻辑"提取到不同的状态对象中,允许状态对象在其内部状态发生改变时改变其行为。
  2. 组成
    • 环境类(Context):也称为上下文,它定义了客户端需要的接口,内部维护一个当前状态,并负责具体状态的切换。
    • 抽象状态(State):定义一个接口,用以封装环境对象中的特定状态所对应的行为,可以有一个或多个行为。
    • 具体状态(Concrete State):实现抽象状态所对应的行为,并且在需要的情况下进行状态切换。
  3. 特点
    • 结构清晰:将与特定状态相关的行为局部化到一个状态中,满足"单一职责原则"。
    • 状态转换显示化:减少对象间的相互依赖。
    • 扩展性好:通过定义新的子类很容易地增加新的状态和转换。
  4. 优缺点
    • 优点:代码结构清晰,具备良好的扩展力。
    • 缺点:使用状态模式会增加系统的类与对象的个数,结构和实现都较为复杂,如果使用不当会导致程序结构和代码的混乱。

状态模式应用场景

  1. 一个对象存在多个状态,状态可以相互转换,且不同状态下行为不同 。例如:
    • 购买物品,将物品放入购物车并生成订单,可以进行付款;如果订单超过24小时后,被关闭订单,此时订单取消,无法付款。
    • 电梯运行时,不能开门;电梯停止后,才能开门。
  2. 控制一个对象状态转换的条件表达式过于复杂时。将状态的判断逻辑转移到表示不同状态的一系列类中,简化复杂的判断逻辑。
  3. 常见的应用场景包括
    • 交通灯:交通信号灯可以有三种状态:红灯、黄灯和绿灯。当灯的状态发生改变时,它的行为也会发生改变。
    • 游戏中的角色:角色的状态有多种选择,如攻击状态、防御状态或逃跑状态。每个状态都有一些不同的行为。
    • 订单支付状态:订单的支付状态,如待支付、支付中、支付成功、支付失败等。

总结

状态模式是一种强大的设计模式,它允许对象根据内部状态的变化改变其行为。通过简化复杂的判断逻辑,状态模式提高了代码的可读性和可维护性,同时也增强了系统的扩展性。然而,在决定是否使用状态模式时,需要考虑系统的复杂度、状态的数量以及状态转换的复杂性等因素。

后续会持续更新分享相关内容, 记得关注哦!

相关推荐
workflower2 分钟前
情境感知系统
人工智能·机器学习·设计模式·自然语言处理·机器人
咖啡八杯2 小时前
设计模式中的原则
设计模式·接口隔离原则·里氏替换原则·开闭原则·合成复用原则·单一职责原则
安冬的码畜日常4 小时前
【工欲善其事】深入理解 Node.js 带并发上限的异步任务批量执行逻辑
javascript·设计模式·node.js·ai编程·异步编程·并发执行
AI大法师16 小时前
一个机场如何被做成 IP 场景:宝可梦机场的设计方法总结
大数据·人工智能·设计模式·新媒体运营
晚安code19 小时前
干掉成山的 if-else:工厂造、策略选,一文讲透两个模式的配合
后端·设计模式
冰箱上的笑话1 天前
从 CORS 报错到两套方案选型:一份能直接抄的跨域复盘
状态模式·安全性测试·跨域
workflower1 天前
从幻觉,到现实
人工智能·深度学习·机器学习·设计模式·机器人
电子科技圈1 天前
第二代无线平台历久弥新,赋能物联网创新迭代
人工智能·嵌入式硬件·mcu·物联网·设计模式·硬件架构·iot
choumin2 天前
创建型模式——工厂方法模式
c++·设计模式·工厂方法模式·创建型模式
choumin2 天前
创建型模式——原型模式
c++·设计模式·原型模式·创建型模式