希曼日记

贫血模型和充血模型

贫血模型(Anemic Domain Model)

贫血模型只包含了数据, 行为都放在外边,一般开发者都喜欢放业务逻辑在service中

为什么叫贫血模型? 因为在医学上贫血又被称为贫血失忆症, 那么在软件开发中, 定义实体通常都是为了承载业务而设计的, 贫血模型会导致业务逻辑分散在各处,那么软件变得复杂时, 反而在实体上看不到业务, 就像“失忆了“一样

缺点

无法有效封装和表达复杂的业务概念,业务被分散到各个service中,难以维护和扩展

充血模型

它的出现是解决了贫血模型的缺点,在一个实体中都包含了 数据 + 操作,一眼就能看出这个实体是做什么的,充血模型包含了该实体所有属性以及引起属性的发生状态变化的方法

总结

贫血模型: 是 数据 和 行为的分离 充血模型: 是 数据 + 行为的统一 解决了什么: 贫血模式和充血模型的出现是解决业务逻辑这一核心问题的两个不同的回答,在DDD中,使用充血模型