首页 / 软件开发 / C# / 使用C# 2.0泛型实现单例模式重用
使用C# 2.0泛型实现单例模式重用2010-08-20justinw介绍很多有着不同开发背景得人都会比较熟悉单例模式。他们会发现每次他们要创 建一个不同的单例类的时候,都不得不写同样得代码。使用新的C# 2.0的泛型, 可以实现只写一次同样得代码。使用 C# 2.0 泛型来完成单例模式的重用使用 C# 2.0 的泛型,使得实现我所说的"单例提供者"成为可能。 这是一个可用来创建单例类实例确不需要为每个特定的类重写单例模式代码的可 重用的类。这样分离出单例结构的代码,将有利于保持按单例模式使用类或不按 单例模式使用类的灵活性。public sealed class Singleton
{
Singleton()
{}
public static Singleton Instance
{
get
{
return SingletonCreator.instance;
}
}
class SingletonCreator
{
// Explicit static constructor to tell C# compiler
// not to mark type as beforefieldinit
static Nested()
{}
internal static readonly Singleton instance = new Singleton();
}
}
基于对泛型的了解,你可以发现没有理由不在这段代码里替换类型参数为泛型 里典型的"T"。如果这样做,这段代码就变成下面这样。public class SingletonProvider<T> where T : new()
{
SingletonProvider() { }
public static T Instance
{
get { return SingletonCreator.instance; }
}
class SingletonCreator
{
static SingletonCreator() { }
internal static readonly T instance = new T();
}
}