01.单例模式
单例模式
-
它只有一个实例
-
向外提供访问点
-
考虑到多线程情况下创建实例
分类
-
懒汉式,线程不安全
不加锁
-
懒汉式,线程安全
加锁
-
饿汉式
不加锁,使用静态变量,加载时就初始化,浪费内存
-
双检锁/双重校验锁
双锁机制,安全且在多线程情况下能保持高性能
using System;
namespace 单例模式
{
/// <summary>
/// 它只有一个实例
/// 向外提供访问点
/// </summary>
public class Signleton
{
private Signleton() { }
private static Signleton instance;
/// <summary>
/// 多线程访问
/// </summary>
private static object locker = new object();
public Signleton GetInstance()
{
if (instance == null)
{
lock (locker)
{
if (instance == null)
{
instance = new Signleton();
}
}
}
return instance;
}
}
}