本文共 1766 字,大约阅读时间需要 5 分钟。
原文标题:Generic Singleton Provider
原文地址:介绍 很多有着不同开发背景得人都会比较熟悉单例模式。他们会发现每次他们要创建一个不同的单例类的时候,都不得不写同样得代码。使用新的C# 2.0的泛型,可以实现只写一次同样得代码。 背景 已经有很多文章介绍过单例模式,也许最完整的一个C#版本在这里可以找到:""。 也有越来越多介绍C#泛型得文章。例如,一篇由CodeProject的Ansil所写的文章可以在这里找到:"" 。 使用 C# 2.0 泛型来完成单例模式的重用 使用 C# 2.0 的泛型,使得实现我所说的"单例提供者"成为可能。这是一个可用来创建单例类实例确不需要为每个特定的类重写单例模式代码的可重用的类。这样分离出单例结构的代码,将有利于保持按单例模式使用类或不按单例模式使用类的灵活性。 在这里使用的单例的代码是基于文章上面提到过的""文章里的第五个版本实现的。注意在这里使用了泛型的约束。这个约束强制任何类型'T'都必须具有无参数的公共构造函数。这里允许singletonCreator类来实例化类型'T'。
那么,要怎么样来使用单例提供者呢?为了弄清除如何使用它,我们需要写一个测试类。这个测试类有两个部分。第一部分是一个默认的构造函数,用来设置timestamp变量的值。第二部分是一个公共函数,用来实现用"Debug.WriteLine"来输出timestamp的值。这个测试类的意思就是不论那个线程在任何时候,在单例下调用这个类公共方法,都将返回相同的值。这个类就像下面这样使用单例提供者:
关注点
我已经在一个超线程的双处理器上使用100个线程在单态模式下进行了测试。所有线程都返回相同的值,这说明这是一个线程安全的使用泛型来实现的单态模式。 我相信这已经充分说明了泛型怎么帮助你简化代码。 历史 略。本文转自Justin博客园博客,原文链接:http://www.cnblogs.com/justinw/archive/2006/05/07/393076.html,如需转载请自行联系原作者