2011-04-05 80 views
1

我在C#服務器應用程序中有大量的大對象。許多對象屬性通常具有默認值。依賴注入可以節省內存空間嗎?

是否值得考慮嘗試依賴注入來優化或減少我的應用程序中的內存使用情況?

+1

對不起,無知:這將如何工作?您可以在接口上模擬您的數組,並根據哪些屬性具有非空值來實例化一組不同的對象之一? DI可以自動執行該操作嗎?我認爲這是爲了抽象應用程序級別的服務。 – Rup 2011-04-05 17:15:34

+0

我在某處讀到它允許根據需要注入屬性,因此認爲它會節省內存。 – paseena 2011-04-05 17:39:43

回答

6

這只是鬆散的聯繫依賴注入 - 你可以分解出的共性,並使用相同的不變對象實例來表示共享狀態。如何創建/訪問此共享對象(另請參閱flyweight pattern)是另一回事,建議可以通過DI或工廠方法進行。

+1

我同意。與依賴注入相比,減少內存並不多,但是因爲最終會有一個更容易適應變化的應用程序,所以在解決性能和內存問題時要容易得多。 – Steven 2011-04-05 17:47:08

+0

我很困惑,因爲wpf屬性系統聲稱減少內存,並且它基於依賴注入。因此我一直在想,依靠注射可能是在做伎倆。請諮詢我想了解什麼 – paseena 2011-04-05 18:15:07

+0

@fruit_trader:我認爲你所指的是WPF實際上如何確定依賴項屬性的*值*是什麼 - 如果一個對象確實提供了不同的值,那麼查找將繼續檢查當前的動畫,繼承的值,模板父,樣式等 - 所以如果使用相同的設置,同一個屬性對象可以被許多不同的控件使用。 – BrokenGlass 2011-04-05 19:13:01