知识卡片
行数据入口与活动记录的核心区别:是否包含领域逻辑
内容
行数据入口是和数据库单条记录高度对应的对象——数据库中每一列变成对象的一个域,负责把数据源类型和内存类型互相转换,客户端可以像访问普通对象一样直接访问它,所有数据源访问细节都被这层接口挡在背后。行数据入口和活动记录看起来非常相似,长期以来很难说清两者的界限,但作者给出了一个清晰的判据:关键要看这个对象里有没有任何领域逻辑——如果有,它就是活动记录;行数据入口应该只包含数据库访问逻辑,不掺杂任何领域逻辑。这个界限虽然清晰,但在实践中并不总是泾渭分明(就像大多数软件边界一样),不过明确这个区分标准本身仍然很有用——它给了一个可操作的检验方法:往一个”看起来像行数据入口”的对象里加东西时,一旦发现加进去的是业务规则而不是纯粹的存取逻辑,这个对象实际上已经悄悄变成了活动记录。
参考来源
- 位置:《企业应用架构模式》第二部分"模式"之"第10章 数据源架构模式"之"10.2.1 运行机制"(源文件:_epub-src/OEBPS/Text/000080.html)
- 结论依据:原文说明"通常很难说清行数据入口和活动记录之间的区别。这个问题的关键要看是否存在任何领域逻辑。如果存在,则是活动记录。行数据入口仅包含数据库访逻辑而没有领域逻辑",直接支撑本卡结论。
- 原始内容:这个问题的关键要看是否存在任何领域逻辑。如果存在,则是活动记录。行数据入口仅包含数据库访逻辑而没有领域逻辑。