简述
在相关的域对象实现中封装数据模型和数据访问细节。主动域对象使应用程序代码避免了与数据库的任何直接交互。
主动是指域对象不只是简单的表示数据,还公开了逻辑操作(初始化、刷新、保存、列表),为它们的数据完成大多数相关的数据库交互。操作的命名使用领域的术语命名。
适用性
需要对应用程序逻辑隐藏物理数据模型和数据访问的复杂性。
需要在单个组件中封装关于某个域概念的所有数据模型和数据访问细节。
需要对应用程序逻辑隐藏数据模型的不一致性和晦涩性——遗留数据的适配。
优点
清晰的应用程序代码
解耦应用程序代码和数据模型
把相关的数据访问代码组织到单个组件中
缺点
数据访问分布在多个域对象中
限制了应用程序对数据访问的控制