贫血模型和充血模型

贫血模型和充血模型

贫血模型 充血模型
事务脚本模式 领域模型模式
只包含属性,get和set 不仅包含属性,还包含业务逻辑
只有状态,没有行为 既有状态,也有行为

贫血模型

贫血模型下领域对象只有所有属性的get/set方式,以及少量简单的属性值转换,不包含任何业务逻辑,不关心对象持久化,只是用来做为数据对象的承载和传递的介质;

优点:结构简单,职责单一,相互隔离性好,使用单例模型提高运行性能;

缺点:对象状态与行为分离,不能直观地描述领域对象。行为的设计主要考虑参数的输入和输出而非行为本身,不太具有面向对象设计的思考方式。行为间关联性较小,更像是面向过程式的方法,可复用性也较小。

注:Spring Boot 采用单例模式,尽量不手动创建对象,对象无状态化,故较推荐使用贫血模型。

充血模型

充血模型下领域对象不仅有属性行为,包含此领域相关的业务逻辑,同时也包含对领域对象的持久化操作。

优点:对象自洽程度很高,表达能力很强,因此非常适合于复杂的企业业务逻辑的实现,以及可复用程度比较高,更符合面向对象设计思想;

后记

贫血模型它完全和面向对象设计背道而驰,是反模式的。

面向对象设计主张将数据和行为绑定在一起,而贫血领域模型则更像是一种面向过程设计;充血模型,则真正的遵守面向对象编程思想,真正的体现软件设计的高内聚,低耦合理念!

面向对象设计的本质是:“一个对象是拥有状态和行为的”。

posted @ 2022-08-31 17:39  lick  阅读(393)  评论(0编辑  收藏  举报