C#單例形式(Singleton Pattern)實例教程。本站提示廣大學習愛好者:(C#單例形式(Singleton Pattern)實例教程)文章只能為提供參考,不一定能成為您想要的結果。以下是C#單例形式(Singleton Pattern)實例教程正文
本文以實例情勢講述了C#單例形式(Singleton Pattern)的完成辦法,分享給年夜家供年夜家參考。詳細完成辦法以下:
普通來講,當從運用法式全局的角度來看,假如只許可類的一個實例發生,便可以斟酌單例形式。
1.即時加載的單例形式
把類的實例賦值給類的一個靜態字段。
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.延遲加載的單例形式
直到挪用類的靜態辦法,才發生類的實例。
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.線程平安的單例形式
直到挪用類的靜態辦法,包管只要一個線程進入發生類的實例。
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("毛病被寫入文件了~~"); } }
總結:靜態單例類型的公有字段,公有結構函數,獲得單例的辦法是組成單例形式的3個需要元素。願望本文所述對年夜家的C#法式設計有所贊助。