9

可能重复:
ORM/DAO/DataMapper/ActiveRecord/TableGateway 差异?

有人可以帮我理解数据映射器和数据访问对象模式之间的区别吗?我已经从 zandstra 的书中了解了数据映射器模式。但是当我搜索数据访问对象时,我发现它们非常相似,甚至是相同的模式。另外我想知道在编写自己的框架时应该使用哪一个(我正在尝试实现自己的 mvc php 框架,只是为了了解现代框架的工作原理)。

4

1 回答 1

10

数据映射器直接保存(并恢复到)域对象的数据,而数据访问对象将用作域对象和存储抽象之间交换信息的中介。

<update> 两种方法的主要区别在于数据映射器临时控制域对象,而数据访问对象要么间接接收数据(通过一些更高级别的抽象,如服务),要么由域控制(在某些实现中,甚至实例化)目的。</update>

这两种模式都与活动记录(反)模式无关,后者将域逻辑和存储抽象结合在单个实例中,从而破坏了SRP

并且没有提到的模式与 ORM 相关联。一些 ORM 尝试使用上述模式来实现,但他们通常在这方面做得很糟糕。

大多数,您所说的“现代框架”使用活动记录模式并将其实例称为“模型”,Rails 延续了这种极端简化的概念。

于 2012-09-04T19:19:01.050 回答