名称 | 特征 | 实现举例 | 说明 | 优缺点 |
失血模型 | 1、domain object只有属性的getter/setter方法的纯数据类 2、所有的业务逻辑完全由business object来完成 |
| 这种模型下的domain object被Martin Fowler称之为“贫血的domain object” | |
贫血模型 | 1、domain object包含了不依赖于持久化的领域逻辑 2、那些依赖持久化的领域逻辑被分离到Service层 |
| 1、这种模型是Martin Fowler所指的真正的domain model 2、业务逻辑切分原则:
3、domain object:可以脱离持久层框架进行单元测试,这个domain object是一个完备的,自包含的,不依赖于外部环境的领域对象,这种情况下,这个logic才是domain logic | 优点:
缺点:
|
充血模型 | 1、绝大多业务逻辑都应该被放在domain object里面(包括持久化逻辑) 2、Service层应该是很薄的一层,仅仅封装事务和少量逻辑,不和DAO层打交道 3、这种模型就是把第二种模型的domain object和business object合二为一了 |
| 优点:
缺点:
| |
胀血模型 | 1、直接取消Service层,在domain object的domain logic上面封装事务 |
| 优点:
缺点:
|
参考: