目录
一、领域模型
领域模型(Domain Model)是对现实世界中对象的表示,又称为领域对象模型、概念模型、业务实体,它通常都具有目标对象的特征和行为,当多个领域模型结合在一起时,就可以完成各种业务逻辑,其实也是对现实世界中对象之间关联关系的一种还原。
这里主要理解领域模型中的两种相对的模型:贫血模型、充血模型。
二、区分
1.贫血模型
贫血模型指的是领域对象只包含了对象的特征,而没有对象的行为。即 POJO 中只有对象的属性和属性的 get/set 方法,所有的业务逻辑都放在业务层。
优点:各层次之间松耦合,结构清晰,领域对象只是用作存放和传输的载体。
缺点:只有属性没有行为的对象是没有生命的,这样的对象不是真正的对象,而且业务逻辑层将会十分庞大。
使用方式:在对象的外围构建一个 Facade 层还封装对象的某些原子操作,以此来简化 Service 层的压力,但是要注意各个模块之间的松耦合,一旦紧耦合,就失去了使用贫血模型的本意。
2.充血模型
充血模型是指模型中不仅包含了对象的属性,还包含了对象的行为,包括业务逻辑、数据持久化等操作。业务层则只是部分的简答调用逻辑、事务控制、权限控制等。
优点:面向对象开发,业务层简洁单一。
缺点:业务逻辑划分难以明确,什么样的业务放在对象中,什么样的业务放在业务层。模块化开发更难,业务层的人需要深入了解领域层对象的行为方法。
使用方法:当进行复杂业务逻辑开发的时候,可以使用充血模型来简化业务层,但是对象的行为方法一定要单一,尽量做好封装。
(原创不易,转发请注明出处!!)