2

貧血モデルはモデルなし...はDTO貧血モデル/貧血値オブジェクトはありますか?

"貧血ドメインモデルは、ドメインオブジェクトにビジネスロジックがほとんどまたはまったくない(検証、計算、ビジネスルールなど)ソフトウェアドメインモデルの使用です。" DTOは、ビジネスロジックなしで貧血モデル

ですか?そして、再び、ビジネスロジックなしのバラエティーのオブジェクト? 2内のすべてのレッツ・スプリット行動の

+2

オブジェクトの2種類があります。 [データ構造と "実際の"オブジェクト](https://sites.google.com/site/unclebobconsultingllc/active-record-vs-objects#TOC-The-Difference- between-Objects- and-Data-Structures)。 DTOは単なるデータ構造であり、オブジェクト指向設計指針はこれらには適用されない。 – plalx

+1

私はp | a | xに同意します。それは意図と関係があります。データ構造がデータのみを転送するために使用され、その意図がそのまま使用される場合、それは「貧血」として分類することはできません。ドメインモデル内でそのような構造を使用することが意図されているのなら、確かに*貧血です。 –

+1

@sensorario https://martinfowler.com/eaaCatalog/dataTransferObject.html(3次元パラグラフでの発言について:ファウラーがバリューオブジェクトの権利を定義し、「サンコミュニティ」が間違っていることが証明されて以来の歴史) – guillaume31

答えて

2

まず:書き込みのための読み取りおよび行動のための行動は、私たちは同じ言語を話します。

DTOはビジネスロジックなしの貧血モデルですか?私たちは言葉を強制する場合は、DTOは不変であるとanemyが唯一のアーキテクチャ(CQRSの例のコマンド側)の変異/書き込み側に理にかなっているので、DTOは貧血かないと言うことはできませんが

DTO does not have any behavior except for storage and retrieval of its own data」:はい少し、DTOは、定義(読み取ることも、書き込むどちらも)貧血で、何の行動を持っていません。

Value objectは(読み取りのための行動)行動を持っています。たとえば、2つの値オブジェクトが等しいかどうかをテストするための振る舞いを実装します。

答えを少し拡張するために、Aggregate rootsとネストされたEntitiesは、書き込み側の動作(すべての種類の検証)を持っています。

関連する問題