私は貧血ドメインモデルがアンチパターンであることについて読んでいて、いくつか質問がありました. 3 つのクライアントが使用するデータベースがあり、それぞれに製品をデータベースに挿入するための異なるビジネス ルールがあります。したがって、リッチ ドメイン モデルを使用すると、コードは次のようになります。
public class Product: IValidatableObject
{
public int Id;
public Client Client;
public int ClientId;
public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
{
if (ClientId == 1)
DoValidationForClientOne();
else if (ClientId == 2)
DoValidationForClientTwo();
else if (ClientId == 3)
DoValidationForClientThree();
}
}
まあ、それは恐ろしいですね。貧血ドメイン モデルがある場合、3 つのサービス レイヤー クラスを簡単に作成できます。これらのクラスには、それぞれ特定のクライアントの検証が含まれます。いいじゃないですか。
私の 2 番目の議論は、デスクトップと Web アプリケーションが同じリッチ ドメイン モデルを使用している場合、HttpException をスローするタイミングとデスクトップ例外をスローするタイミングをどのように知ることができるかということです。分けたほうがいいんじゃない?では最後に、私のプロジェクトでこのような状況で貧血ドメイン モデルがアンチ パターンになるのはなぜでしょうか?