单例模式(Singleton):保证一个类仅有一个实例,并提供一个访问它的全局访问点。
单例模式中,类自身负责保存它的唯一实例,这个类保证没有其它实例被创建,并提供一个访问该实例的方法。
class Singleton
{
private static Singleton instance; //声明一个静态的类变量
private Singleton() //构造方法为private,堵死了外界利用new创建类实例的可能
{
}
public static Singleten GetInstance() //全局访问点,GetInstance是一个静态方法,静态方法缺少this指针,只能访问类的静态变量
{
if(instance==null)
{
instance=new Singleton();
}
return instance;
}
}双重锁定:
多线程中,为了实现线程之间的互斥性,需使用临界区方法锁定代码,双重锁定可以增加性能。
普通方法:
class Singleton
{
private static Singleton instance; //声明一个静态的类变量
private static readonly object syncRoot=new object();
private Singleton() //构造方法为private,堵死了外界利用new创建类实例的可能
{
}
public static Singleten GetInstance() //全局访问点
{
lock(syncRoot)
{
if(instance==null)
instance=new Singleton();
}
return instance;
}
}双重锁定:class Singleton
{
private static Singleton instance; //声明一个静态的类变量
private static readonly object syncRoot=new object();
private Singleton() //构造方法为private,堵死了外界利用new创建类实例的可能
{
}
public static Singleten GetInstance() //全局访问点
{
if(instance==null)
{
lock(syncRoot)
{
if(instance==null)
instance=new Singleton();
}
return instance;
}
}
本文介绍单例模式的概念及其实现方式,探讨了如何确保在多线程环境中单例模式的正确性和效率,包括普通同步方法和双重锁定机制。
101万+

被折叠的 条评论
为什么被折叠?



