2016-10-14坚持学习Day5单例模式
Posted zscmj
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了2016-10-14坚持学习Day5单例模式相关的知识,希望对你有一定的参考价值。
今天学习第二个模式:单例模式。只允许系统有一个实例运行,提供全局访问该实例的公共方法。
class Singleton { private static Singleton instance=null; //静态私有成员变量 //私有构造函数 private Singleton() { } //静态公有工厂方法,返回唯一实例 public static Singleton GetInstance() { if(instance==null) instance=new Singleton(); return instance; } }
饿汉单例:
class EagerSingleton { private static EagerSingleton instance = new EagerSingleton(); private EagerSingleton() { } public static EagerSingleton GetInstance() { return instance; } }
懒汉单例+双重保险
class LazySingleton { private static LazySingleton instance = null; //程序运行时创建一个静态只读的辅助对象 private static readonly object syncRoot = new object(); private LazySingleton() { } public static LazySingleton GetInstance() { //第一重判断,先判断实例是否存在,不存在再加锁处理 if (instance == null) { //加锁的程序在某一时刻只允许一个线程访问 lock(syncRoot) { //第二重判断 if(instance==null) { instance = new LazySingleton(); //创建单例实例 } } } return instance; } }
以上是关于2016-10-14坚持学习Day5单例模式的主要内容,如果未能解决你的问题,请参考以下文章