知识卡片
CQS命令与查询方法必须分离
内容
命令查询分离(CQS)由Bertrand Meyer提出:一个方法要么是执行动作的命令,要么是返回数据的查询,不能两者皆是——问题不应对答案进行修改,只有引用透明(无副作用)时方法才能返回数据。代码层面分离的目的是隔离副作用;对象建模范式虽无纯函数的严格要求,遵循CQS仍有必要。放到架构层面,分离不仅隔离副作用,还承担分离领域模型、响应不同调用者需求的职责。发散:CQS是方法级的纪律,CQRS是它在架构级的放大。
参考来源
- 位置:《解构领域驱动设计》第18章《领域驱动设计的战略考量》18.3.1(源文件:_epub-src/OEBPS/031.xhtml)
- 结论依据:原文引Meyer定义CQS,说明其目的是隔离副作用,并指出架构层面还承担分离模型的职责。
- 原始内容:一个方法要么是执行某种动作的命令,要么是返回数据的查询,而不能两者皆是……这就是命令查询分离模式。