《领域驱动设计模式、原理与实践》笔记
大约 2 分钟
软件行为由领域模型控制。只要将领域逻辑与技术问题相隔离,就能实现模型驱动设计,从而实现领域驱动设计。
领域模型实现模式分为领域模型、事务脚本、表模块。
领域模型
事务脚本
事务脚本模式遵循开发的程序化风格而非面向对象方法。通常会为每个业务事务创建单个程序,并且它是按照某种静态管理器或服务类来分组的。每个程序都包含所有需要的业务逻辑,以完成从工作流、业务规则和验证检查到数据库中持久性的业务事务。
即事务脚本将事务封装成一个个的脚本,是面向过程的。它可用于领域中具有很少逻辑或不具有逻辑的部分。一个操作的所有逻辑都包含在单个服务方法中。
表模块
表模块模式会将对象模型映射到数据库模型。单个对象代表着数据库中的一个表或视图。该对象负责与业务逻辑行为一起的所有持久化需要。
当领域中有上下文隔离时,简单数据形式可以采用这一模式,即数据库驱动设计;但模型对象和数据库对象开始不一致时,就需要向领域模型方向重构。
活动记录
活动记录是表模块模式的变体,它是将对象映射到表的行,而不是用对象表示表自身。一个对象表示一个位于瞬时状态或处于修改中的数据库行(记录)。
在活动记录模式中,每个业务对象都负责其自身的持久化以及相关业务逻辑。
贫血领域模型
将领域对象仅作为简单数据传输类(POCO:Plain Old CLR Obect[1]),领域服务实现具体的业务逻辑,类似于事务脚本。