欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 维修 > 设计模式-状态模式:让对象的行为随状态改变而清晰可控

设计模式-状态模式:让对象的行为随状态改变而清晰可控

2025/2/7 12:29:05 来源:https://blog.csdn.net/m0_51176516/article/details/145468076  浏览:    关键词:设计模式-状态模式:让对象的行为随状态改变而清晰可控

🌟 引言

场景痛点:
你是否遇到过这样的代码?

if (state == "待支付") {// 处理待支付逻辑
} else if (state == "已支付") {// 处理已支付逻辑
} else if (...) {// 无限的条件分支...
}

条件分支爆炸导致代码臃肿、难以维护?状态模式正是解决这类问题的利器!

本文亮点:

  • 3个真实代码示例
  • 角色结构图 + 对比表格
  • JDK源码应用分析

一、状态模式是什么?

1.1 概念

状态模式(State Pattern) 是一种行为型设计模式,它允许一个对象在其内部状态改变时改变它的行为。状态模式将对象的行为封装到不同的状态类中,使得对象在不同状态下有不同的行为表现。

简单来说,状态模式的核心思想是:将状态与行为分离,让对象的行为随着状态的改变而自动改变,而不是通过大量的条件判断来实现。

核心思想:

  • 状态与行为解耦:将每个状态的行为封装到独立类中。
  • 消除条件分支:通过多态实现状态切换,避免if-else嵌套。

1.2 举个栗子 🌰

想象一个自动售货机

  • 状态:待投币 → 已投币 → 售出 → 缺货
  • 行为:投币、退币、出货在不同状态下表现不同。
    用状态模式实现,代码将清晰如丝滑!

🔧 二、状态模式原理与结构

2.1 结构图

+-------------------+        +-------------------+
|      Context      |        |       State       |
|-------------------|        |-------------------|
| - state: State    |<-------| + handle(): void  |
| + setState(State) |        +-------------------+
| + request()       |                  ^
+-------------------+                  ||+-----------------------------------+|                                   |+-------------------+             +-------------------+| ConcreteStateA    |             | ConcreteStateB    |

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com