单例模式是设计模式中最简单和最容易理解的模式,需要注意的地方只有一个,第一次实例化的时候要确保是线程安全即可。
第一种实现
///
/// 多线程不安全单利
///
public class Single
{
private static Single Instance;
private Single()
{ }
public static Single GetInstance()
{
if (Instance == null)
Instance = new Single();
return Instance;
}
}
第二种实现
///
/// 多线程安全单利 每次要加锁浪费资源
///
public class Single
{
private static Single Instance;
private static readonly object locker = new object();
private Single()
{ }
public static Single GetInstance()
{
lock (locker)
{
if (Instance == null)
Instance = new Single();
}
return Instance;
}
}
第三中实现
///
/// 多线程安全单利 只需要第一次判断是否加锁
///
public class Single
{
private static Single Instance;
private static readonly object locker = new object();
private Single()
{ }
public static Single GetInstance()
{
if (Instance == null)
{
lock (locker)
{
if (Instance == null)
Instance = new Single();
}
}
return Instance;
}
}
第四种实现
///
/// 多线程安全单利 C#运行时保证任何线程第一次访问Instance静态变量之前一定先创建实例
///
public class Single
{
private static Single Instance = new Single();
private Single()
{ }
public static Single GetInstance()
{
return Instance;
}
}
【C#设计模式----单列模式】
推荐阅读
- 面试|我经历的IT公司面试及离职感受(转)
- java|设计模式——创建型——工厂方法(Factory Method)
- 设计模式|设计模式_创建型模式——工厂方法
- 设计模式|设计模式——创建型软件设计模式——工厂方法模式
- 设计模式之装饰器模式
- 设计模式之设计原则
- 设计模式六大原则(5)(迪米特法则 最少知道)
- 观察者模式实现之EventBus(Google)
- Java高级面试|常见设计模式——装饰模式
- java设计模式——单例模式