单件模式(Singleton Pattern)

单件模式(Singleton Pattern):用来创建独一无二的,只有一个实例的对象的入场券

 //以“MyClass”作为单件类的类名,你可以根据自己的单件进行命名
    public class MyClass
    {
        //单件类内部的唯一实例,volatile关键词确保当uniqueInstance变量被初始化成为Singleton实例时,多个线程正确的处理uniqueInstance变量
        private volatile static MyClass uniqueInstance;
       //用于同步锁
       private static object synchronized = new object();
        //保证外部程序无法对该类进行实例化
        private MyClass() { }
        //通过静态方法获取该单件类,具体操作为'MyClass.getInstance()'
        public static MyClass getInstance()
        {   
                lock (synchronized){             //使用synchronized进行同步锁,进入该区域后其他线程无法进入该区域    
                if (uniqueInstance == null){   //检查变量uniqueInstance是否已经被实例

                      uniqueInstance = new Singleton();
                 }
                }
            }
            return uniqueInstance;
        }
    }


简化的实现方式

    public class MyClass
    {
        private MyClass() { }

        private static readonly Lazy<MyClass> _instance = new Lazy<MyClass>(() => new MyClass());

        public static MyClass Instance { get { return _instance.Value; } }

    }

总结:

确保一个类只有一个实例,并提供一个全局访问点。

下面有一个讲的很好的单例模式,但是使用JAVA实现的,讲解参考性非常棒。

转载:

http://blog.csdn.net/likika2012/article/details/11483167   作者:likika2012


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值