矛盾していません。両方の支持者は、実際のコードをドメインオブジェクト自体に配置することを望んでいます。
すなわち。
public class Order
{
private string status = "not bought";
public void Buy()
{
this.status = "bought";
}
}
vs ADM
public class Order
{
public string Status = "not bought";
}
public class BuyingService
{
public Order Buy(Order order)
{
Order o = new Order();
o.status = "bought";
return o;
}
}
対注入サービス
public class Order
{
public Order(IBuyingService bs)
{
_bs = bs;
}
private IbuyingService _bs;
private string status = "not bought";
public void Buy()
{
this.status = _bs.Buy();
}
}
public class BuyingService : IBuyingService
{
public string Buy()
{
return = "bought";
}
}
率直に言って、各アプローチにはプラスとマイナスがあります。あなたが選択するものは主に個人的な好みの問題です