誰かがこれらの 3 つの概念と、MVC フレームワークに関してそれらの違いを例とともに説明できますか? 私には、これらはほぼ同等に見えます。また、一部の記事では同じ意味で使用されていて、別の記事では使用されていないようです。
4 に答える
混乱している用語は、「ドメイン オブジェクト」、「ドメイン エンティティ」、および「モデル オブジェクト」です。通常は同じ意味で使用されますが、ドメイン エンティティとモデル オブジェクトは、アクティブなレコードパターンのインスタンスにすることもできます(基本的には、ストレージ ロジックが追加されたドメイン オブジェクト)。
通常のドメイン オブジェクトには、ストレージ ロジックはありません。データマッパーによって処理されます。
「モデル オブジェクト」という用語は、Fowler の本 (詳細についてはPoEAAを参照) に由来し、モデル全体がアプリケーション層 (MVC はそれとプレゼンテーション層で構成されている) であるため、混乱を招く MVC の一部であり、それらを含む通常、サービスによって処理される「モデル オブジェクト」(この図では、モデル レイヤーは 3 つの同心円すべてが一緒になっています)。
代わりに「ドメイン オブジェクト」という用語を使用することを好みます。
「ドメイン エンティティ」(または「エンティティ オブジェクト」) という用語は通常、作成者がオブジェクトがストレージ構造 (多くの場合、データベース テーブル) の直接的な表現であることを示唆する場合に使用されます。これらは、ほとんどの場合、アクティブ レコードの実装でもあります。
PS:一部の記事では、「モデル」(複数形) という用語も表示されます。通常、MVC 設計パターンとは直接関係ありません。これは、「モデル」が単なるアクティブなレコードであり、コントローラーによって直接公開/作成される Rails のようなアーキテクチャについて話しているためです。
..これがあなたをもっと混乱させたかどうかはわかりません
用語は少し曖昧です。私は同意します。私はあなたが扱っている事業領域を指すためにドメインを使用します。銀行や保険などのように。次に、ドメインモデルがあります。これらは、アカウント、顧客、転送などを持っている銀行のドメインのように、そのビジネスドメインで扱うものです。クラス/POJOまたはモデルの永続化/具体化バージョンを参照するためにエンティティという用語を使用します。
ここでおそらく混乱するのは、MVCという用語では、モデルは具体的なものですが、Web GUIでプレゼンテーションを表すために使用されるデータモデルを参照しているため、上記の説明と混同しないでください。