知识卡片
贫血模型的成因与识别
内容
遵循“数据结构与算法分离”原则建立领域模型,是结构建模范式的典型特征,得到的往往是只有数据没有行为的贫血模型。Martin Fowler 指出贫血模型明显特征是:看上去和领域模型一样(有对象、属性、关系),但观察其业务逻辑时,除了 getter/setter 几乎没有其他业务逻辑。以数据库/数据表为驱动力建模时(PO 是数据表映射、本质是数据结构而非真正对象,业务逻辑被转移到服务对象、数据访问交给 DAO),会很自然地得到贫血模型。发散:以库表结构反推对象往往先天贫血——建模驱动力应是领域行为而非表结构。
参考来源
- 位置:《解构领域驱动设计》附录A A.1.2 / A.1.3(源文件:_epub-src/OEBPS/034.xhtml)
- 结论依据:原文引用 Fowler 对贫血模型的定义,并说明以数据库建模会自然得到贫血模型。
- 原始内容:贫血模型中除了一些getter、setter方法,几乎没有其他业务逻辑……若以数据库建立的模型作为设计的驱动力,就会很自然地得到贫血模型。