知识卡片
无状态更简单
内容
状态越多,对象越难复用、测试和并发控制。把可变状态外移到上下文或事件中,核心执行器保持无状态,可以让复杂流程更容易组合,也减少隐藏副作用。关联:[[简化逆向做功]]
参考来源
- 位置:《程序员的底层思维》第8章《简单思维》8.3节「极简状态机的实现」(源文件:Cheng Xu Yuan De Di Ceng Si Wei_split_012.html)
- 结论依据:原文明确指出主流状态机引擎因为有状态而非线程安全,导致每次请求都要新建实例带来性能开销,因此设计无状态状态机,直接支持卡片论点。
- 原始内容:"这些状态机都是有状态的,因为有状态,状态机的实例就不是线程安全的。……每次状态机在接受请求时,都不得不新建一个全新的状态机实例,这就给应用服务器带来很大的性能开销。……实现一个极简的"无状态"状态机,只负责状态流转的业务语义显性化表达,而且不维护状态。"