DDD-四种业务模型

1.失血模型

数据对象中只有只有属性和set和get方法,业务逻辑层里包含了几乎所有的逻辑,不重要几乎不用

DDD-四种业务模型_第1张图片

 特点:对象中只包含get set方法

优点:领域对象结构简单

缺点:1.肿胀的业务逻辑代码,难以维护

2.无法应对频繁更改的需求

2.贫血模型

数据对象在失血模型中的数据对象的基础上添加固有行为

DDD-四种业务模型_第2张图片

固有行为:可以理解为本能行为,如睡觉吃饭走路等,正常人都拥有这种行为。

非固有行为:如打游戏、识别文字,都是一些后天的行为,部分人才有

优点:层次结构清晰,各层级单向依赖

对只有少量业务逻辑的应用来说,使用起来非常自然

缺点:无法良好的应对非常复杂的逻辑和场景

这种模型是Spring一致引领的方向,所以非常的流行用途极广

3.充血模型

更加符合面相对象的设计

DDD-四种业务模型_第3张图片

其实它是没有单独持久层的,持久化的逻辑放在领域对象当中

所以上面的图我们也可以改为:

DDD-四种业务模型_第4张图片

 

数据对象和业务逻辑是平行逻辑 

 优点:1.更加符合面相对象的原则

2.业务逻辑层很薄,薄到几乎完全符合单一职责原则

 缺点:1.职责不好划分(无专门的持久层),要求开发者水平要很高

2.模型中包含了大量的操作,实例化的时候增加很多不必要的消耗,会实例化很多的关联对象

4.胀血模型

DDD-四种业务模型_第5张图片

 

优点:1.简化了分层架构

2.也算是符合面向对象的设计原则

缺点:1.取消了业务逻辑层,直接在domain Object(领域对象)上封装事务以及授权,授权很多原本不属于这个领域对象的逻辑,模型不稳定,代码缺乏可维护的稳定性

你可能感兴趣的:(java,设计模式,设计规范)