如何在C#中实现Singleton设计模式?

Singleton模式属于Creational类型模式

当我们需要确保仅实例化特定类的一个对象时,使用单例设计模式。创建的单个实例负责协调整个应用程序中的动作。

作为实施准则的一部分,我们需要通过声明该类的所有构造函数为私有来确保该类仅存在一个实例。同样,为了控制单例访问,我们需要提供一个静态属性,该属性返回对象的单个实例。

示例

密封确保继承类,并且在派生类中限制对象实例化

私有属性初始化为null

确保仅创建该对象的一个实例

基于空条件

私有构造函数可确保除了使用类本身之外,不实例化对象

可以通过单例实例调用的公共方法

public sealed class Singleton {
   private static int counter = 0;
   private static Singleton instance = null;
   public static Singleton GetInstance {
      get {
         if (instance == null)
         instance = new Singleton();
         return instance;
      }
   }
   private Singleton() {
      counter++;
      Console.WriteLine("Counter Value " + counter.ToString());
   }
   public void PrintDetails(string message) {
      Console.WriteLine(message);
   }
}
class Program {
   static void Main() {
      Singleton fromFacebook = Singleton.GetInstance;
      fromFacebook.PrintDetails("From Facebook");
      Singleton fromTwitter = Singleton.GetInstance;
      fromTwitter.PrintDetails("From Twitter");
      Console.ReadLine();
   }
}

输出结果

Counter Value 1
From Facebook
From Twitter