国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#單例模式(Singleton Pattern)實例教程

2020-01-24 02:25:34
字體:
供稿:網(wǎng)友

本文以實例形式講述了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)方法,保證只有一個線程進入產(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è)計有所幫助。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 都昌县| 临颍县| 高邑县| 梓潼县| 济南市| 襄汾县| 元阳县| 黑水县| 镇赉县| 义乌市| 安吉县| 太康县| 乌苏市| 嵊州市| 德保县| 克什克腾旗| 平度市| 海安县| 烟台市| 怀仁县| 虎林市| 营口市| 乌海市| 陇川县| 岳阳市| 九江县| 莎车县| 资中县| 双城市| 余干县| 西吉县| 新民市| 宜宾县| 丰宁| 乌拉特中旗| 闽清县| 杨浦区| 洮南市| 石景山区| 敦煌市| 文登市|