今天跟大家分享一个知识点即领域模型之
贫血模型和充血模型。
看完这篇文章你会更深入理解各自的优缺点和适用场景。希望对你平时开发和架构设计有所参考和帮助。
贫血模型
1
什么是贫血模型
贫血模型是一种领域模型,该模型下的领域对象包含很少或没有业务逻辑(对象只包含基本的属性即属性对应的getter/setter方法)。
是一种面向过程的编程模式,它与面向对象设计的基本思想相悖,将数据和过程结合在一起。
上面的介绍可能稍微觉得抽象,我觉得要理解贫血模型我们要了解另一个知识点即事务脚本编程模式。
2
事务脚本模式
事务脚本模式(Transaction Script)简称TS模式,这个模式本身的核心思想就是名称中的两个词,即:事务与脚本。
事务可以理解为实际需要执行的一段原子业务;
脚本则是指的一组原子业务的编排方式。而通常来说脚本的编排会直接映射到用户的一个行为动作上。
怎么理解这个事务脚本模式呢?
大家注意到我上面贴的截图没有,是不是我们熟悉的开发一直在用的MVC分层架构。
而且从这个控制层传递的业务DTO对象里面也只有相关属性和对应的的setter和getter方法。业务层收到DTO参数后经过自己的处理,再把处理的结果给到DAO层持久化。
上述这种就是典型的事务脚本模式。业界也叫贫血模式。
充血模型
1
什么是充血模型
对于一个实体对象,会有属性和行为,对于行为中,我们可能会封装一些业务逻辑,那么这种业务逻辑恰恰就是这个类的一个行为;
这也更加符合我们对于面向对象编程思想。
2
核心要义
从定义看充血模型它保护了对象的数据及计算逻辑。
比如订单对象既有订单相关属性(订单编号、价格、下单时间等)也有相关的计算方法(下单操作、是否过期,检查订单状态等)
这样看领域模型它是合并了属性和行为的对象模型。
通过领域模型对象的交互,完成业务逻辑的实现。可以这么说设计好了领域对象,也就设计好了业务逻辑实现。
所以业界又把这种模型称为领域模型。
它是真正的遵守面向对象编程思想,体现高内聚,低耦合理念!