领域驱动设计
优点:更贴近与面向对象设计:由实例对象发出动作(执行实例方法)然后影响实例关联实体的数据
不足:设计复杂(聚合根、域边界、友好的持久化注入、实现架构例子不多)、对于传统mvc架构不易理解
与传统设计mvc模式的比较:
领域驱动设计模型
模型设计分类:失血模型、贫血模型、充血模型、胀血模型。
失血模型
只包含实体类基本属性的get/set方法,业务逻辑与实体关联mvc模式的service层实现
贫血模型
在失血模型基础上加入了实体关联关系比如订单Order包含多个商品List<Commodity> commoditys,并且订单对应的下单、退单、订单完成相关操作修改商品状态依赖Order实体中的对应的方法修改订单与商品状态,完成后返回到service完成持久化操作
service->model->service->dao
充血模型
在贫血模型的基础上,增加了持久化操作,service只作为模型方法的组装,不进行额外的持久化|逻辑操作,对于领域外的其他业务操作通过发布spring内置事件(event)的形式进行操作
service->model->dao->数据库
胀血模型
取消了service,在domain ligic上实现事务操作