看到《剑指Offer》的面试题2觉得有趣自己写了个泛型单例。
优点:
1.多线程安全。
2.首次调用Instance时才执行实例化。
3.简单干净,没有其它没必要的成员函数,需要的话可以自己加。
4.支持泛型。
public class Singleton<T> where T : Singleton<T>, new()
{
protected Singleton() { }
public static T Instance
{
get
{
return Nested<T>.instance;
}
}
class Nested<TK> where TK : new()
{
static Nested(){}
internal static readonly TK instance = new TK();
}
}
修正:构造函数的访问级别由private 改为 protected,否则子类无法构造。