版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/u010741376/article/details/45816711
所谓单例模式就是:单例模式保证一个类仅有一个实例,同时这个类还必须提供一个访问该类的全局访问点。
单例模式又分懒汉式和饿汉式:
懒汉式:
public class Singleton
{
private static Singleton singleton;//定义一个私有的静态全局变量来保存该类的唯一实例
private static readonly object syncObject = new object();//定义一个只读静态对象且这个对象是在程序运行时创建的
//防止外界实例化
private Singleton(){}
/**
* 定义一个全局访问点 设置为静态方法 则在类的外部便无需实例化就可以调用该方法
* @return
*/
public static Singleton GetInstance()
{
/**
* //这里可以保证只实例化一次即在第一次调用时实例化,以后调用便不会再实例化 第一重 singleton == null
*/
if (singleton == null)
{
lock (syncObject)
{
if (singleton == null)//第二重 singleton == null
{
singleton = new Singleton();
}
}
}
return singleton;
}
}
}
饿汉式:调用的时候就被创建
public class Singleton
{
private static readonly Singleton singleton = new Singleton();
private Singleton(){}
public static Singleton GetInstance()
{
return singleton;
}
}
}