為什么不使用IoC容器來(lái)解決實(shí)體/業(yè)務(wù)對(duì)象的依賴關(guān)系?我理解DI背后的概念,但我只是在學(xué)習(xí)不同的IoC容器可以做什么。似乎大多數(shù)人都提倡使用IoC容器來(lái)連接無(wú)狀態(tài)服務(wù),但是將它們用于實(shí)體這樣的有狀態(tài)對(duì)象又如何呢?無(wú)論是對(duì)還是錯(cuò),我通常都會(huì)用行為填充我的實(shí)體,即使這種行為需要一個(gè)外部類。例子:public class Order : IOrder
{
private string _ShipAddress;
private IShipQuoter _ShipQuoter;
public Order(IOrderData OrderData, IShipQuoter ShipQuoter)
{
// OrderData comes from a repository and has the data needed
// to construct order
_ShipAddress = OrderData.ShipAddress; // etc.
_ShipQuoter = ShipQuoter;
}
private decimal GetShippingRate()
{
return _ShipQuoter.GetRate(this);
}
}如您所見(jiàn),依賴項(xiàng)被注入構(gòu)造函數(shù)?,F(xiàn)在來(lái)問(wèn)幾個(gè)問(wèn)題。讓實(shí)體依賴外部類(如ShipQuunt)是否被認(rèn)為是一種糟糕的做法?如果我正確地理解了這個(gè)定義,消除這些依賴似乎會(huì)導(dǎo)致我走向貧血的領(lǐng)域。使用IoC容器來(lái)解決這些依賴關(guān)系并在需要時(shí)構(gòu)造一個(gè)實(shí)體是否是一種糟糕的做法?有可能這樣做嗎?謝謝你的洞察力。
為什么不使用IoC容器來(lái)解決實(shí)體/業(yè)務(wù)對(duì)象的依賴關(guān)系?
躍然一笑
2019-06-19 11:14:20