You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

以最低成本改进状态设计模式:新增方法后的类图变更问询

状态设计模式新增方法的最低成本类图变化

核心思路是用最小修改量实现需求,遵循开闭原则,尽量不改动已有稳定类结构,具体分三种场景:

1. 新增方法是所有状态的通用行为

  • 在抽象State基类里添加该方法的默认实现(比如空实现或通用逻辑)
  • 具体State子类如果需要自定义逻辑就重写,不需要的话直接继承默认实现即可
  • 类图变化:
    • 抽象State类新增一个方法节点
    • 仅重写了该方法的具体子类,需要在类图里标注这个方法;未重写的子类无需额外修改
    • Context类完全不用改动,直接通过持有的State引用调用新方法

2. 新增方法只是部分状态的特有行为

  • 不要修改抽象State基类,避免影响所有子类
  • 新建一个抽象子类(比如命名为SpecialState),继承原State类并添加该新方法
  • 需要该行为的具体State子类,改为继承SpecialState并实现方法;其他子类保持原有继承关系不变
  • 类图变化:
    • 新增SpecialState抽象类节点,继承原State类并包含新方法
    • 对应具体子类的继承箭头从原State指向SpecialState
    • Context类无需修改,若需调用该方法,仅在确定当前状态为SpecialState子类时做类型转换即可

3. 新增方法需要依赖Context的额外数据

  • 尽量控制对Context的修改范围,仅在必要时添加属性或辅助方法
  • 方法核心逻辑仍放在State体系中实现,Context仅负责传递数据或提供访问入口
  • 类图变化:
    • 若修改了Context,则给Context类添加对应的属性或方法节点
    • State类或其子类新增方法,方法参数可包含Context引用以获取所需数据

内容的提问来源于stack exchange,提问作者Leili Vazietan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 20:35:30