アプリケーション全体で呼び出しに頼る代わりにIsValid(xx)
、Greg Young からのアドバイスを受けることを検討してください。
エンティティを無効な状態にしないでください。
これが基本的に意味することは、エンティティを純粋なデータ コンテナーとして考えることから、動作を伴うオブジェクトについて考えることに移行することです。
個人の住所の例を考えてみましょう。
person.Address = "123 my street";
person.City = "Houston";
person.State = "TX";
person.Zip = 12345;
これらの呼び出しの間では、エンティティは無効です (互いに一致しないプロパティがあるためです。次のことを考慮してください。
person.ChangeAddress(.......);
アドレスを変更する動作に関連する呼び出しはすべて、アトミック ユニットになりました。ここでエンティティが無効になることはありません。
状態ではなく動作をモデル化するというこの考え方を採用すると、無効なエンティティを許可しないモデルに到達できます。
これに関する良い議論については、次の infoq インタビューをチェックしてください: http://www.infoq.com/interviews/greg-young-ddd