我支持在你的應用程序上使用依賴注入,盡管有些人認為它給代碼增加了不必要的復雜性。在過去的幾天里,我想知道,對于某些場景,使用 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個贊
是的,它會被“浪費”,但這種浪費的性質取決于它的設置方式:
If
Service2
總是作為一個新實例創建;那相當昂貴如果
Service2
處于單實例模式,它所做的就是獲取現有實例(超級便宜)如果
Class
處于單實例模式;它獲取該實例而不注入任何新內容
此外,這表明違反了 SRP。也許Class
應該拆分成兩個對象,一個依賴Service1
,一個依賴Service 2
(甚至兩者都依賴)。
不管上述情況如何,“浪費”只有在實際影響您的應用程序時才重要,DI 的好處遠遠超過這些類型的問題。
- 1 回答
- 0 關注
- 228 瀏覽
添加回答
舉報
0/150
提交
取消