知识卡片

领域服务别滥用

普通读书笔记卡 · 1764.c

内容

领域服务适合表达不自然属于某个实体或值对象的领域行为;应用服务负责编排用例、事务和外部协作。把所有规则都放进服务,会让[[贫血模型代价]]重新出现。

参考来源

- 位置:《复杂软件设计之道》第4章《实体和值对象》"4.4 领域服务"及"4.4.1 领域服务的特征"(源文件:_chapter_text/ch04.txt) - 结论依据:原文明确"领域服务被开发人员用作真正的银弹,但最终成为产生贫血模型的最大原因",并给出领域服务应满足"操作涉及的不是实体或值对象自然部分的领域概念"等特征,说明服务应处理协调职责,而非取代实体/值对象承担的业务规则。 - 原始内容:领域服务被开发人员用作真正的银弹,但最终成为产生贫血模型的最大原因……根据领域服务的定义,无法放入实体和值对象的行为操作,或者涉及多个实体的操作都可以放入领域服务中,但是由于很难发现真正的充血实体和值对象,最终导致过分充血的领域服务,以及失血的实体和值对象。