9

重複の可能性:
ORM/DAO/DataMapper/ActiveRecord/TableGateway の違い?

データマッパーとデータアクセスオブジェクトパターンの違いを理解するのを手伝ってくれる人はいますか? zandstra の本からデータ マッパー パターンについては既に知っています。しかし、データ アクセス オブジェクトを検索すると、非常に類似した、または同じパターンさえあることがわかりました。また、独自のフレームワークを作成するときにどれを使用する必要があるかを知りたいです (最新のフレームワークがどのように機能するかを学ぶためだけに、独自の mvc php フレームワークを実装しようとしています)。

4

1 に答える 1

10

データ マッパーは、ドメイン オブジェクトから直接データを保存 (および復元) しますが、データ アクセス オブジェクトは、ドメイン オブジェクトとストレージ抽象化の間の情報交換の仲介として使用されます。

<update> 2 つのアプローチの主な違いは、データ マッパーが一時的にドメイン オブジェクトを制御するのに対し、データ アクセス オブジェクトはドメインによって間接的に (サービスなどのより高いレベルの抽象化を介して) データを受け取るか、ドメインによって制御される (一部の実装ではインスタンス化されることさえあります) ことです。物体。</update>

どちらのパターンも、ドメイン ロジックとストレージの抽象化を 1 つのインスタンスに組み合わせたアクティブ レコード(アンチ) パターンとリモートで関連していないため、 SRPが壊れます。

また、前述のパターンはいずれも ORM に関連付けられていません。一部の ORM は、実装に上記のパターンを使用しようとしますが、通常は非常に悪い仕事をします。

「最新のフレームワーク」と呼ばれるもののほとんどは、アクティブ レコード パターンを使用し、そのインスタンスを「モデル」と呼んでいます。

于 2012-09-04T19:19:01.050 に答える