状态模式是一种行为型设计模式,用于在对象内部状态变化时改变其行为。它通过将状态封装为独立类,使对象的行为随着状态的切换而动态变化,从而避免了“状态爆炸”问题。

📌 核心概念

  • 状态对象:每个状态是一个独立类,包含对应的行为逻辑
  • 上下文环境:持有当前状态对象,定义公共接口
  • 状态切换:通过修改上下文中的状态引用实现状态转移

例如:

# 状态接口
class State:
    def handle(self):
        pass

# 具体状态类
class StateA(State):
    def handle(self):
        print("当前状态为 A")

class StateB(State):
    def handle(self):
        print("当前状态为 B")

# 上下文类
class Context:
    def __init__(self):
        self._state = StateA()

    def set_state(self, state):
        self._state = state

    def request(self):
        self._state.handle()

📚 适用场景

  • 对象行为依赖于它的状态
  • 状态数量较多且需要避免条件判断语句
  • 状态转换规则复杂,需解耦逻辑

✅ 优点

  • 解耦状态与行为:状态变化不影响对象结构
  • 扩展性强:新增状态只需添加新类
  • 维护性高:状态逻辑集中管理,降低复杂度

⚠️ 缺点

  • 类数量增加:每个状态都需要独立类
  • 初期开发成本:需要设计状态转换图

🌐 相关阅读

🔗 状态模式的进阶应用
🔗 其他设计模式对比

状态模式