贫血模型和充血模型
贫血模型 | 充血模型 |
---|---|
事务脚本模式 | 领域模型模式 |
只包含属性,get和set | 不仅包含属性,还包含业务逻辑 |
只有状态,没有行为 | 既有状态,也有行为 |
贫血模型
贫血模型下领域对象只有所有属性的get/set方式,以及少量简单的属性值转换,不包含任何业务逻辑,不关心对象持久化,只是用来做为数据对象的承载和传递的介质;
优点:结构简单,职责单一,相互隔离性好,使用单例模型提高运行性能;
缺点:对象状态与行为分离,不能直观地描述领域对象。行为的设计主要考虑参数的输入和输出而非行为本身,不太具有面向对象设计的思考方式。行为间关联性较小,更像是面向过程式的方法,可复用性也较小。
注:Spring Boot 采用单例模式,尽量不手动创建对象,对象无状态化,故较推荐使用贫血模型。
充血模型
充血模型下领域对象不仅有属性行为,包含此领域相关的业务逻辑,同时也包含对领域对象的持久化操作。
优点:对象自洽程度很高,表达能力很强,因此非常适合于复杂的企业业务逻辑的实现,以及可复用程度比较高,更符合面向对象设计思想;
后记
贫血模型它完全和面向对象设计背道而驰,是反模式的。
面向对象设计主张将数据和行为绑定在一起,而贫血领域模型则更像是一种面向过程设计;充血模型,则真正的遵守面向对象编程思想,真正的体现软件设计的高内聚,低耦合理念!
面向对象设计的本质是:“一个对象是拥有状态和行为的”。
标签:贫血,对象,模型,充血,面向对象,行为 From: https://www.cnblogs.com/lick468/p/16643992.html