亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

當并非所有實例都被使用時,依賴注入是一個好主意嗎?

當并非所有實例都被使用時,依賴注入是一個好主意嗎?

C#
DIEA 2021-08-22 14:51:02
我支持在你的應用程序上使用依賴注入,盡管有些人認為它給代碼增加了不必要的復雜性。在過去的幾天里,我想知道,對于某些場景,使用 DI 時可能會有些浪費。讓我用代碼示例來解釋它:使用 DIpublic class Class {    private Service1 service1;    private Service2 service2;    public MyClass (Service1 service1, Service2 service2)     {        this.service1 = service1;        this.service2 = service2;    }    private int SampleMethod()     {        Console.WriteLine("doing something with service 1");        service1.DoSomething();        return 0;    }    private int SampleMethod2()     {        Console.WriteLine("doing something with service 2");        service2.DoSomethingElse();        return 1;    }}如果我很少調用 SampleMethod2 并且每次需要 Class 實例時都會注入它怎么辦?那豈不是浪費資源?幾天前我收到了這個問題,我正在嘗試找出答案。不使用 DI 并讓每個方法在使用時創建他們需要的實例以避免這種“浪費”是否更容易?由于 DI 提供的解耦,這是合理的“浪費”嗎?
查看完整描述

1 回答

?
SMILET

TA貢獻1796條經驗 獲得超4個贊

是的,它會被“浪費”,但這種浪費的性質取決于它的設置方式:

  • IfService2總是作為一個新實例創建;那相當昂貴

  • 如果Service2處于單實例模式,它所做的就是獲取現有實例(超級便宜)

  • 如果Class處于單實例模式;它獲取實例而不注入任何新內容

此外,這表明違反了 SRP。也許Class應該拆分成兩個對象,一個依賴Service1,一個依賴Service 2(甚至兩者都依賴)。

不管上述情況如何,“浪費”只有在實際影響您的應用程序時才重要,DI 的好處遠遠超過這些類型的問題。


查看完整回答
反對 回復 2021-08-22
  • 1 回答
  • 0 關注
  • 228 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號