星空网 > 软件开发 > ASP.net

《大话设计模式》学习笔记17:单例模式

  《大话设计模式》学习笔记17:单例模式

  《大话设计模式》学习笔记17:单例模式

实现:

1.Singleton:

  public class Singleton  {    private static Singleton instance;    //构造方法为private,外部代码不能直接实例化    private Singleton()    {    }    public static Singleton GetInstance()    {      if(instance==null)      {        instance = new Singleton();      }      return instance;    }  }

2.客户端代码:

  class Program  {    static void Main(string[] args)    {      Singleton singleton1 = Singleton.GetInstance();      Singleton singleton2 = Singleton.GetInstance();      if(singleton1==singleton2)      {        Console.WriteLine("两个对象是相同的实例。");      }      else      {        Console.WriteLine("两个对象是不同的实例。");      }    }  }

 

线程时的单例:

1.lock:

  public class Singleton  {    private static Singleton instance;    private static readonly object syncRoot = new object();    private Singleton()    {    }    public static Singleton GetInstance()    {      lock(syncRoot)      {        if (instance == null)        {          instance = new Singleton();        }      }      return instance;    }  }

2.双重锁定:

  public class Singleton  {    private static Singleton instance;    private static readonly object syncRoot = new object();    private Singleton()    {    }    public static Singleton GetInstance()    {      if(instance==null)      {        lock (syncRoot)        {          if (instance == null)          {            instance = new Singleton();          }        }      }      return instance;    }  }

 

静态初始化:

  public sealed class Singleton//sealed阻止发生派生,因为派生可能会增加实例  {    private static readonly Singleton instance = new Singleton();    private Singleton()    {    }    public static Singleton GetInstance()    {      return instance;    }  }

 

静态初始化的方式在自己被加载时就将自己实例化,称之为恶汉式单例类;之前的单例模式是在第一次被引用时才会将自己实例化,称为懒汉单例类。




原标题:《大话设计模式》学习笔记17:单例模式

关键词:设计模式

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流