知识卡片
状态模式的适用场景与状态数量上限
内容
应用[[状态模式的定义与三个角色]]的判断标准:对象行为随状态改变而发生较大变化; 或代码已出现大量switch/if处理这种状态相关分叉。经验上状态数量最好不超过5个,否则 [[状态模式的优点与类膨胀的代价]]中的类膨胀问题会难以控制。发散:”5个”阈值与 [[策略模式的适用场景与策略数量阈值]]的”策略超过4个考虑混合模式”呼应——这类”用子类替代 分支”的模式都有隐含规模上限,超过时需引入状态机、数据表驱动等额外组织手段。
参考来源
- 位置:《设计模式之禅(第2版)》第26章《状态模式》(源文件:_epub-src/text/part0121.html)
- 结论依据:原文列出使用场景"行为随状态改变而改变的场景""条件、分支判断语句的替代者",并在注意事项中明确"使用时对象的状态最好不要超过5个"。
- 原始内容:行为随状态改变而改变的场景……在这种情况下需要考虑使用状态模式……条件、分支判断语句的替代者……状态模式适用于当某个对象在它的状态发生改变时,它的行为也随着发生比较大的变化……而且使用时对象的状态最好不要超过5个。