业务对象的贫血模型与充血模型

业务对象是指那些从实际业务场景中抽象出来的对象,这些对象在代码中对应的就是一些业务对象类。

在常见的SSH框架的开发中,一般的做法是将每一个业务对象对应一个POLO,当然这是为了方便使用ORM框架。当我们把业务对象实现为POJO的时候,我们实际上是在使用业务对象贫血模式。下面是 业务对象贫血模型图:(业务对象类既领域层的model)




在贫血模型中,业务对象仅仅包含数据而不包含行为,他的作用只是数据的载体或者说是数据的传递介质。系统的业务逻辑全部放到业务逻辑层,会导致业务逻辑层比较庞大。

为了避免出现贫血模型中业务逻辑层较庞大的缺点,考虑将一些恰当的业务逻辑放到业务对象类中,即贫血模型的POJO类中。下面是 业务对象充血模型图:(业务对象类既领域层的model)



在充血模型中,业务对象既包含数据又包含行为,他的作用不再只是数据的载体而是一个真正有行为的对象。此时,领域层作为软件体系的一个层次出现而非贫血模式中的辅助的角色。

贫血模型和充血模型,两个各有优势:

贫血模型的系统层次清楚,但是不够面向对象。在业务逻辑层处理所有的业务逻辑,太过沉重。

充血模型足够面向对象,业务逻辑层符合单一职责原则,不像在贫血模型里面那样太过沉重。但是如何将业务逻辑划分到业务层和领域层比较含糊。

你可能感兴趣的:(充血模型,贫血模型,业务对象)