C#單例模式(Singleton Pattern)實例教程
本文以實例形式講述了C#單例模式(Singleton Pattern)的實現(xiàn)方法,分享給大家供大家參考。具體實現(xiàn)方法如下:
一般來說,當(dāng)從應(yīng)用程序全局的角度來看,如果只允許類的一個實例產(chǎn)生,就可以考慮單例模式。
1.即時加載的單例模式
把類的實例賦值給類的一個靜態(tài)字段。
class Program { static void Main(string[] args) { Logger log = Logger.GetInstance(); log.WriteToFile(); Console.Read(); } } public class Logger { private static Logger logger = new Logger(); private Logger(){} public static Logger GetInstance() { return logger; } public void WriteToFile() { Console.WriteLine("錯誤被寫入文件了~~"); } }
2.延遲加載的單例模式
直到調(diào)用類的靜態(tài)方法,才產(chǎn)生類的實例。
public class Logger { private static Logger logger = null; private Logger(){} public static Logger GetInstance() { if (null == logger) { logger = new Logger(); } return logger; } public void WriteToFile() { Console.WriteLine("錯誤被寫入文件了~~"); } }
3.線程安全的單例模式
直到調(diào)用類的靜態(tài)方法,保證只有一個線程進(jìn)入產(chǎn)生類的實例。
public class Logger { private static Logger logger = null; private static object lockObj = new object(); private Logger(){} public static Logger GetInstance() { lock (lockObj) { if (logger == null) { logger = new Logger(); } return logger; } } public void WriteToFile() { Console.WriteLine("錯誤被寫入文件了~~"); } }
總結(jié):靜態(tài)單例類型的私有字段,私有構(gòu)造函數(shù),獲取單例的方法是構(gòu)成單例模式的3個必要元素。希望本文所述對大家的C#程序設(shè)計有所幫助。
相關(guān)文章
Unity的IPostprocessBuild實用案例深入解析
這篇文章主要為大家介紹了Unity的IPostprocessBuild實用案例深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-05-05Unity3D實現(xiàn)待機狀態(tài)圖片循環(huán)淡入淡出
這篇文章主要為大家詳細(xì)介紹了Unity3D實現(xiàn)待機狀態(tài)圖片循環(huán)淡入淡出,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-04-04