11

私は POEAA のアーキテクチャ パターンの章を読んでいますが、Fowler は次のように述べています。 . ドメイン ロジックを小さなクラスに分割すると、ドメイン クラスとテーブルの 1 対 1 の一致が失敗し始めます. リレーショナル データベースは継承を処理しないため、戦略 [Gang of Four] やその他のきちんとした OO パターンを使用することが難しくなります. . ドメイン ロジックが複雑になるにつれて、データベースと常に対話することなくテストできるようにする必要があります。」

私はこれを本当に理解していませんでした。「ドメイン クラスとテーブルの 1 対 1 の一致」とは、関連付けや単一のテーブル継承階層がないクラスに対してのみという意味ですか?

また、ドメイン ロジックを小さなクラスに分解すると、パターンが失敗するのはなぜでしょうか?

4

2 に答える 2

5

彼が言おうとしているのは、より複雑なドメイン モデルは通常、単なる「テーブルからのデータ」以上のものであるということです。Fowler が話しているこれらのより複雑なモデルは、さまざまなテーブル、ビュー、または他のソースからデータを取得するモデルです。

Active Record パターンはこの目的にはあまり適していません。モデル クラスのみと組み合わせた DataMapper パターン (ビジネス ロジックのみを含み、データ アクセス層と通信しない) は、おそらくこのような状況により適しています。

Active Record パターンは、多かれ少なかれデータベース内のテーブルに直接マップされるため、ここでは失敗します。

正確なパターン定義がわからないので、間違っていたら訂正してください。

于 2011-04-12T14:24:00.720 に答える
2

いいえ、彼はドメイン ロジックについて話していると思います。アクティブ レコードを使用すると、オブジェクトはデータと動作の両方を保持します。つまり、1対1の試合です。Data Mapper パターンのように、データと動作を分離し始めると、1 対多になります。彼の意味を理解するために、学術的なナンセンスのようにその本を読まなければならないことがあるという印象があります. :-)

于 2011-04-12T14:11:02.303 に答える