文章翻译自 Implementing the Singleton Pattern in C#

Singleton 是一种典型的设计模型。通常一个类称为 Singleton 范式意味着这个类只能实例化出一个对象。原文里面有复杂的推导过程。我们这里不赘述了。Singleton 设计的重点包含以下几个方面:

  1. 线程安全;
  2. Lazy 初始化,即需要时再创建对象;
  3. 实现简单

文章最后给出的设计方法如下:

1
2
3
4
5
6
7
8
9
10
11
public sealed class Singleton
{
private static readonly Lazy<Singleton>
lazy = new Lazy<Singleton> (() => new Singleton());

public static Singleton Instance { get { return lazy.Value; } }

private Singleton()
{
}
}

这里使用了 .NET 4 提供的 Lazy<T> 类型。