ドメイン エンティティ User があり、User がアイテムをショッピング カートに追加できるようにしたいとします。ここで、ショッピング カート内のアイテムが一意であることを確認したいので、User クラス内に次の関数を作成します。
function AddItemToCart(Item item)
{
// Add business logic to make sure item is unique
}
これはうまくいきます。しかし、アイテムがカートに追加されるたびにユーザーに電子メールを送信したい場合はどうなるでしょうか? これを AddItemToCart に追加できますが、User クラスにある種の IEmailer 依存関係を挿入する必要があります。
別の方法として、このトランザクションを処理するサービス (ShoppingCartService など) を作成して、ビジネス ロジックを実行し、電子メールを送信することもできます。ただし、これはかなり貧弱なドメインにつながります (つまり、User クラスは getter/setter に他なりません)。