在我的wpf應用程序中,我使用了很多爲高速緩存而聲明爲靜態的對象。 只是想知道是否有任何缺點。wpf應用程序中的靜態對象
0
A
回答
0
我幾乎從不使用靜態數據,因爲添加工作線程時會遇到固有的問題。
如果你只想要一個可以被對象訪問的東西的實例,那麼Singleton模式可能會有幫助。你可能想閱讀Singletons in C#這篇有用的文章。
還有一個框架可以使請求服務真的很容易。您可以設置框架爲您提供服務的新實例,或每次都提供相同的服務。問題是我不記得它叫什麼,並且如果別人可以評論這個,我會很感激它,因爲我想再次閱讀它。我認爲這是Unity或Prism,但我不確定。我知道後面的框架是爲了設置你的應用程序時考慮到MVVM原則。
0
一個缺點是一個類的靜態成員沒有完整的懶惰實例化。靜態構造函數將在第一次訪問該類的任何成員時運行。這可能會或可能不會成爲您的重大關切。
在我看來,一個更大的問題是靜態對單元測試並不好。假設您正在嘗試爲另一個類編寫單元測試,該類引用這些靜態對象。您無法爲這些對象設置模擬。你不得不使用真實的東西,這可能最終迫使你啓動大部分系統,在這種情況下,它不再是單元測試,而是集成測試。
我不認爲你需要完全避免static
關鍵字;只要注意你這樣做對你的程序的限制。而使用Singleton並不是唯一的選擇。您可以簡單地選擇遵循"just create one"政策。 :)
相關問題
- 1. 在靜態函數中調用Asp.net應用程序對象
- 2. 使用ItemsControl對象在WPF應用程序中動態滾動
- 3. ASP.NET應用程序狀態與靜態對象
- 4. 靜態對象/多個應用程序域/一個進程
- 5. 錯誤 - 在WPF應用程序中找不到靜態資源
- 6. 靜態ArrayList中的應用程序類
- 7. 靜態庫中對象的順序
- 8. Pebble應用程序中的靜態和非靜態功能
- 9. Dagger2 - 組件作爲應用程序中的靜態對象保存
- 10. 應用程序類和對象狀態
- 11. UIScrollVIew中的靜態對象
- 12. Weblogic中的靜態對象
- 13. 靜態變量和應用對象
- 14. '靜態' 對象
- 15. 靜態對象
- 16. 客戶端激活對象在應用程序域中靜態對象的遠程處理壽命
- 17. WPF應用程序中的模態對話框焦點問題
- 18. 爲WPF應用程序中的對象分配名稱屬性
- 19. 在WPF和WinForms中創建應用程序對象的區別
- 20. 何時初始化靜態類?需要從應用程序對象調用的時候,應用程序啓動
- 21. Android應用程序的靜態分析
- 22. 只用靜態方法將程序轉換爲使用對象的程序
- 23. 使用asp.net中靜態對象的
- 24. WPF將靜態對象分配給XAML中的DataContext
- 25. C#靜態對象引用
- 26. 對象需要被訪問的全局,靜態變量或應用程序contx
- 27. ASP.NET應用程序池回收會刷新靜態對象上的緩存嗎?
- 28. uiscrollview中的靜態和動態對象
- 29. 在WPF應用程序中嵌入Internet Explorer COM對象
- 30. 從C#中的代碼初始化靜態資源WPF應用程序
哦,從哪裏開始?靜力學是邪惡的... –