C#單例模式


1、定義
單例模式是確保一個類只有一個實例,並提供一個全局訪問方式的設計方法
2、UML類圖
3、應用場景
  需要頻繁實例化然后銷毀的對象。 
  創建對象時耗時過多或者耗資源過多,但又經常用到的對象。 
  有狀態的工具類對象。 
  頻繁訪問數據庫或文件的對象。
 
4、C#實現單例模式
4.1 單線程單例模式
代碼解析:
Singleton的構造函數必須是私有的,確保外層無法通過new進行實例化對象
靜態變量的生命周期同應用程序的生命周期相同,可以定義一個私有的全局靜態變量_instance來保存該類的唯一實例
提供一個可訪問的靜態方法訪問類的實例,在該方法內通過判斷_instance是否為null,如果是null就創建一個實例,否則向外部返回實例
 
4.2 多線程單例模式
1) lock方式
 
代碼解析:
外層if判斷_instance不為null時,直接返回實例,避免每次獲取實例時進行鎖定,節省了 性能損耗
當外層判斷成功時,使用lock鎖定,保證只創建一個實例
2) 靜態構造函數
 
 
代碼解析:
靜態構造函數只會執行一次
3) 靜態變量初始化
代碼解析:
靜態變量在初次運行時就會初始化,readonly確保變量運行時無法修改
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM