软件编程
位置:首页>> 软件编程>> C#编程>> C#单例模式(Singleton Pattern)实例教程

C#单例模式(Singleton Pattern)实例教程

作者:shichen2014  发布时间:2022-11-23 10:44:05 

标签:C#,单例,模式

本文以实例形式讲述了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#程序设计有所帮助。

0
投稿

猜你喜欢

手机版 软件编程 asp之家 www.aspxhome.com