码迷,mamicode.com
首页 > Web开发 > 详细

单例模式 net

时间:2017-10-16 11:02:45      阅读:259      评论:0      收藏:0      [点我收藏+]

标签:key   div   不能   构造方法   进程   ado   辅助   summary   returns   

最近用到了单例模式,以下是个人理解,如有不对的请各路大神指点

1.简介:单例模式严格定义一个类只有一个实例,并提供一个他的全局访问点。

2.解决问题:当一个类只是要求可以创建一个实例时,需要使用单例模式。

3.构成:由一个私有变量,一个私有构造函数和一个公共的方法构成。

4.实例:

public  class Singleton
    {
     /// <summary>
    /// 程序运行时,创建一个静态只读的进程辅助对象
    /// </summary>
     private static readonly object _object=new object();

    /// <summary>
    /// 构造方法私有,外键不能通过New类实例化此类
    /// </summary>
        private static Singleton instance;
     
       //私有构造方法Singleton(),外界不能使用new关键字来创建此类的实例了。
        private Singleton() { }

       
    /// <summary>
    /// 此方法是本类实例的唯一全局访问点
    /// (双重加锁 Double-Check Locking)
    /// </summary>
    /// <returns></returns>
        public static Singleton GetInstance()
        {
           //先判断实例是否存在,不存在再加锁处理
            if (instance==null)
            {
                //在同一时刻加了锁的那部分程序只有一个线程可以进入,
                lock (_object)
                {
                     //如实例不存在,则New一个新实例,否则返回已有实例
                    if (instance==null)
                    {
                        instance = new Singleton();
                    }
                }
                 
                
            }
            return instance;
        }
    }


客户端调用:
  class Program
    {
        static void Main(string[] args)
        {
            var singleton1 = Singleton.GetInstance();
            var singleton2 = Singleton.GetInstance();
            if (singleton1==singleton2)
            {
                Console.WriteLine("2个实例相同");
            }

            Console.ReadKey();
        }
    }

  

单例模式 net

标签:key   div   不能   构造方法   进程   ado   辅助   summary   returns   

原文地址:http://www.cnblogs.com/mili3/p/7675711.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!