任何人都可以幫助我瞭解使用單一設計模式使用System.Lazy的好處。什麼是System.Lazy <T>和Singleton設計模式
10
A
回答
15
在C#單身人士(也包括Lazy<>
)的最佳來源屬於喬恩斯基特:http://csharpindepth.com/Articles/General/Singleton.aspx
假設你想有一個類:
- 代表一個獨特的資源,所以它應該有一個唯一的實例,
- 的實例都需要昂貴的初始化,
- 初始化參數將只在運行時,
- 有,你不會使用之後的所有對象的情況下,
- 有超過一個線程可以嘗試同時初始化singleton對象,
- 等
如果上述的大部分條件是真實的,你將需要確保類是單例,並且唯一實例是懶惰初始化的(不需要初始化直到需要)如果你的目標是C#4.0或更高版本,使用Lazy<>
可以使你的設計更簡單,更易讀,更易於記憶。
1
文檔說
使用延遲(中T)的實例推遲或大或 資源密集型對象的創建或資源密集型 任務的執行,特別是當這樣的創建或在程序的生命週期內執行可能不會發生 。
所以,你只有在你需要它的情況下才能創建單例實例。
延遲實例化通常很有用,因此在應用程序啓動時不支付所有創建成本 - 可以提供更好的用戶體驗。
相關問題
- 1. Singleton設計模式
- 2. 在.NET平臺是什麼類使用Singleton設計模式?
- 3. Spring singleton和Java singeleton(設計模式)有什麼區別?
- 4. 有關Singleton設計模式和C#
- 5. 的Java Singleton設計模式
- 6. Singleton設計模式和防止克隆
- 7. 設計模式 - 這是什麼模式?
- 8. C#類庫 - Singleton設計模式
- 9. 這是什麼設計模式?
- 10. 什麼是動作設計模式?
- 11. 什麼是門面設計模式?
- 12. 什麼是「調度員」設計模式?
- 13. 這是什麼設計模式?
- 14. 這是什麼設計模式?
- 15. .net中的設計模式是什麼?
- 16. 什麼是四人幫設計模式
- 17. 什麼是鬼魂設計模式?
- 18. 這是什麼設計模式?
- 19. 這是什麼樣的設計模式?
- 20. 什麼是非鎖定設計模式?
- 21. 這是什麼JS設計模式?
- 22. Singleton設計模式vs Spring中的Singleton bean容器
- 23. 通用Singleton外觀設計模式
- 24. Singleton設計模式示例請
- 25. 實現Singleton設計模式[請建議]
- 26. Singleton模式 - 懷疑頭部設計模式書
- 27. GOF和GRASP設計模式之間的區別是什麼
- 28. 什麼是你最好的Swing設計模式和技巧?
- 29. HTML和CSS的設計模式是什麼?
- 30. 設計模式和架構模式有什麼區別?
對這些條款有任何提及嗎?我確定無論什麼定義,可能有一些例子... – 2012-03-10 06:51:07