专注于分布式,性能优化,代码之美

C# 最基本的涉及模式(单例模式)

//密封,保证不能继承  

  public sealed class Xiaohouye
    {

    //私有的构造函数,保证外部不能实例化
        private Xiaohouye()
        {
        }
        //防止多线程,并发
        private static object syncObj = new object();   

//我们在给类型中创建一个静态实例。当用户需要该类型的实例时,我们就返回这个实例
        private static Xiaohouye instance = null;
      

         public static Xiaohouye  Instance
        {

        //获取实例

            get
            {

           //  if 判断保证了唯一性:实现在第一次调用instance 时候才会创建类型的唯一实例,不会每一次调用都创建实例
                if (instance == null)
                {

// lock 是为了在多线程环境下保证仍然是一个实例,我们应该在判断实例是否已经创建,以及在实例还没有创建的时候创建一个实例的语句上加一个同步锁,当实例已经创建之后,就不需要再做加锁操作了
                    lock (syncObj)
                    {

               //保证对象永远只有一个
                        if (instance == null)

                        instance = new Xiaohouye();
                    }
                }
 
                return instance;
            }
        }
    }

posted on 2015-12-23 16:24  xiaohouye  阅读(165)  评论(1编辑  收藏  举报

导航

今日之劳累是为了铸造明日之辉煌,不管年龄多少,都无法阻挡我对软件艺术的追求!