领域模型中贫血模型与充血模型的理解

一、领域模型

        领域模型(Domain Model)是对现实世界中对象的表示,又称为领域对象模型、概念模型、业务实体,它通常都具有目标对象的特征和行为,当多个领域模型结合在一起时,就可以完成各种业务逻辑,其实也是对现实世界中对象之间关联关系的一种还原。

领域模型中有两种相对的模型:贫血模型、充血模型。

二、二者区分

贫血模型

        贫血模型指的是领域对象只包含了对象的特征,而没有对象的行为。即 POJO 中只有对象的属性和属性的 get/set 方法,所有的业务逻辑都放在业务层。

 优点:各层次之间松耦合,结构清晰,领域对象只是用作存放和传输的载体。

缺点:只有属性没有行为的对象是没有生命的,这样的对象不是真正的对象,而且业务逻辑层将会十分庞大。

使用方式:在对象的外围构建一个 Facade 层还封装对象的某些原子操作,以此来简化 Service 层的压力,但是要注意各个模块之间的松耦合,一旦紧耦合,就失去了使用贫血模型的本意。

充血模型

       充血模型是指模型中不仅包含了对象的属性,还包含了对象的行为,包括业务逻辑、数据持久化等操作。业务层则只是部分的简答调用逻辑、事务控制、权限控制等。

 

优点:面向对象开发,业务层简洁单一。

缺点:业务逻辑划分难以明确,什么样的业务放在对象中,什么样的业务放在业务层。模块化开发更难,业务层的人需要深入了解领域层对象的行为方法。

使用方法:当进行复杂业务逻辑开发的时候,可以使用充血模型来简化业务层,但是对象的行为方法一定要单一,尽量做好封装。

你可能感兴趣的:(领域驱动设计,架构)