目录
3. 双重锁定(多线程安全,如果对象已经存在了,就不需要加锁来创建对象)
1. 懒汉式(多线程不安全,延迟创建):
public class Singleton
{
private static Singleton instance;
private Singleton()
{
}
public static Singleton Instance
{
get
{
if (instance == null)
instance = new Singleton();
return instance;
}
}
}
2. 饿汉式(多线程不安全,立即创建)
public class Singleton
{
private static Singleton instance = new Singleton();
private Singleton()
{
}
public static Singleton Instance
{
get => instance;
}
}
3. 双重锁定(多线程安全,如果对象已经存在了,就不需要加锁来创建对象)
public class Singleton
{
private static Singleton instance;
private static readonly object accessLock = new object();
private Singleton()
{
}
public static Singleton Instance
{
get
{
if (instance == null)
{
lock (accessLock)
{
if (instance == null)
instance = new Singleton();
}
}
return instance;
}
}
}
4. 单例模式基类
public class SingletonBase<T> where T : new() {
private static T _Instance;
public static T GetInstance()
{
if (_Instance == null) _Instance = new T();
return _Instance;
}
}