贫血模型:领域对象里只有get和set方法,或者包含少量的CRUD方法,而不包含有业务逻辑的处理,把"行为"和"状态"分离到不同的对象里,只有状态的对象被称为"贫血对象"(VO),而只有"行为"的对象一般被用作服务对象,就像spring的server一样,都是无状态对象,本身并不存储数据,只处理逻辑。
充血模型:业务逻辑和持久化都放在对象中,Business Logic(业务逻辑层)只负责简单封装部分业务逻辑以及控制事务、权限等。
例:
要设计一个操作用户的功能,
贫血模型:
需要User+UserService,
添加新用户userService.save(User user)。
充血模型:
user.save()
贫血模式中,行为和状态是分开的,需要Business Logic层操作User,而充血模型下操作都由对象本身来完成。