知识卡片

查询与修改器和命令查询分离原则

普通读书笔记卡 · 1942.e

内容

UML把不改变系统可观察状态、只取值的操作称为查询(query);把改变状态的操作称为修改器(modifier,也叫命令)。区分两者的价值:查询之间可任意调整执行顺序而不影响系统行为,给重构和推理代码留出空间。Meyer的命令-查询分离原则建议修改器不返回值,这样有返回值的操作就自动等于查询。获取/设置方法只是查询/修改器的具体实现,客户不该也不能从外部分辨查询是不是简单的获取方法。

参考来源

- 位置:《UML精粹:标准对象建模语言简明指南(第3版)》第3章《类图:基础》(源文件:_epub-src/EPUB/2.xhtml) - 结论依据:原文定义查询为"从类中取值而不改变系统状态的操作——换句话说,没有副作用",并说明"[Meyer]把这称为命令 查询分离原则",同时指出"客户应该不能够识别查询是不是获取方法,修改器是不是设置方法"。 - 原始内容:UML把查询(query)定义为从类中取值而不改变系统状态的操作……我发现强调查询很有帮助,因为你可以改变查询执行的次序,而不会改变系统行为……[Meyer]把这称为命令 查询分离原则……客户应该不能够识别查询是不是获取方法,修改器是不是设置方法。