状态模式是一种行为型设计模式,用于在对象内部状态变化时改变其行为。它通过将状态封装为独立类,使对象的行为随着状态的切换而动态变化,从而避免了“状态爆炸”问题。
📌 核心概念
- 状态对象:每个状态是一个独立类,包含对应的行为逻辑
- 上下文环境:持有当前状态对象,定义公共接口
- 状态切换:通过修改上下文中的状态引用实现状态转移
例如:
# 状态接口
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()
📚 适用场景
- 对象行为依赖于它的状态
- 状态数量较多且需要避免条件判断语句
- 状态转换规则复杂,需解耦逻辑
✅ 优点
- 解耦状态与行为:状态变化不影响对象结构
- 扩展性强:新增状态只需添加新类
- 维护性高:状态逻辑集中管理,降低复杂度
⚠️ 缺点
- 类数量增加:每个状态都需要独立类
- 初期开发成本:需要设计状态转换图