欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

 更新時(shí)間:2014年09月12日 15:14:41   投稿:shichen2014  
這篇文章主要介紹了C#單例模式(Singleton Pattern)的實(shí)現(xiàn)方法,主要講述了即時(shí)加載的單例模式、延遲加載的單例模式與線程安全的單例模式,需要的朋友可以參考下

本文以實(shí)例形式講述了C#單例模式(Singleton Pattern)的實(shí)現(xiàn)方法,分享給大家供大家參考。具體實(shí)現(xiàn)方法如下:

一般來說,當(dāng)從應(yīng)用程序全局的角度來看,如果只允許類的一個(gè)實(shí)例產(chǎn)生,就可以考慮單例模式。

1.即時(shí)加載的單例模式

把類的實(shí)例賦值給類的一個(gè)靜態(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("錯(cuò)誤被寫入文件了~~");
    }
}

2.延遲加載的單例模式

直到調(diào)用類的靜態(tài)方法,才產(chǎn)生類的實(shí)例。

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("錯(cuò)誤被寫入文件了~~");
    }
}

3.線程安全的單例模式

直到調(diào)用類的靜態(tài)方法,保證只有一個(gè)線程進(jìn)入產(chǎn)生類的實(shí)例。

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("錯(cuò)誤被寫入文件了~~");
    }
}

總結(jié):靜態(tài)單例類型的私有字段,私有構(gòu)造函數(shù),獲取單例的方法是構(gòu)成單例模式的3個(gè)必要元素。希望本文所述對(duì)大家的C#程序設(shè)計(jì)有所幫助。

相關(guān)文章

  • C#使用Process類調(diào)用外部exe程序

    C#使用Process類調(diào)用外部exe程序

    本文通過兩個(gè)示例講解了一下Process類調(diào)用外部應(yīng)用程序的基本用法,并簡(jiǎn)單講解了StartInfo屬性,有需要的朋友可以參考一下。
    2016-03-03
  • C#畫筆Pen繪制曲線的方法

    C#畫筆Pen繪制曲線的方法

    這篇文章主要介紹了C#畫筆Pen繪制曲線的方法,主要涉及C#畫筆中DrawCurve方法的使用技巧,需要的朋友可以參考下
    2015-06-06
  • C# 實(shí)現(xiàn)特殊字符快速轉(zhuǎn)碼

    C# 實(shí)現(xiàn)特殊字符快速轉(zhuǎn)碼

    這篇文章主要介紹了C# 實(shí)現(xiàn)特殊字符快速轉(zhuǎn)碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • C#中函數(shù)的創(chuàng)建和閉包的理解

    C#中函數(shù)的創(chuàng)建和閉包的理解

    這篇文章主要介紹了C#中函數(shù)的創(chuàng)建和閉包的理解,本文講解了動(dòng)態(tài)創(chuàng)建函數(shù)、匿名函數(shù)不足之處、理解c#中的閉包、閉包的優(yōu)點(diǎn)等內(nèi)容,需要的朋友可以參考下
    2015-04-04
  • C#中實(shí)現(xiàn)可變參數(shù)實(shí)例

    C#中實(shí)現(xiàn)可變參數(shù)實(shí)例

    這篇文章主要介紹了C#中實(shí)現(xiàn)可變參數(shù)實(shí)例,本文演示使用params 實(shí)現(xiàn)可變數(shù)量的參數(shù),并且這些參數(shù)的類型可以不同,需要的朋友可以參考下
    2015-01-01
  • c#冒泡排序算法示例

    c#冒泡排序算法示例

    這篇文章主要介紹了c#冒泡排序算法示例,需要的朋友可以參考下
    2014-04-04
  • Unity的IPostprocessBuild實(shí)用案例深入解析

    Unity的IPostprocessBuild實(shí)用案例深入解析

    這篇文章主要為大家介紹了Unity的IPostprocessBuild實(shí)用案例深入解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-05-05
  • Unity3D實(shí)現(xiàn)待機(jī)狀態(tài)圖片循環(huán)淡入淡出

    Unity3D實(shí)現(xiàn)待機(jī)狀態(tài)圖片循環(huán)淡入淡出

    這篇文章主要為大家詳細(xì)介紹了Unity3D實(shí)現(xiàn)待機(jī)狀態(tài)圖片循環(huán)淡入淡出,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-04-04
  • Unity3D生成一段隧道網(wǎng)格的方法

    Unity3D生成一段隧道網(wǎng)格的方法

    這篇文章主要為大家詳細(xì)介紹了Unity3D生成一段隧道網(wǎng)格的方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-08-08
  • 詳解c# 強(qiáng)制轉(zhuǎn)換和類型轉(zhuǎn)換

    詳解c# 強(qiáng)制轉(zhuǎn)換和類型轉(zhuǎn)換

    這篇文章主要介紹了c# 強(qiáng)制轉(zhuǎn)換和類型轉(zhuǎn)換的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)c#,感興趣的朋友可以了解下
    2020-10-10

最新評(píng)論