当开发人员想将一个类以单例模式实现时,可以在类中写单例模式的代码实现。
当时如果项目中存在多个单例模式的类时,我们可以采取每个类都写的方式。
但是更聪明的方法是采取单例模式的泛型实现。
以下是一个简单的控制台泛型单例模式的例子。
1.泛型单例类
- class Singleton<T> where T: class,new()
- {
- private static T _instance;
- private static readonly object syslock=new object();
-
- public static T getInstance() {
- if (_instance == null)
- {
- lock (syslock) {
- if (_instance == null)
- {
- _instance = new T();
- return _instance;
- }
- else {
- return _instance;
- }
- }
- }
- else {
- return _instance;
- }
- }
- }
后优化为
- class Singleton<T> where T: class,new()
- {
- private static T _instance;
- private static readonly object syslock=new object();
-
- public static T getInstance()
- {
- if (_instance == null)
- {
- lock (syslock) {
- if (_instance == null)
- {
- _instance = new T();
- }
- }
- }
- return _instance;
- }
- }
2.1.譬如我们自己有一个类myclass,继承上述类即可实现单例化
- class myclass : Singleton<myclass> {
- public void ss() {
- Console.WriteLine("111");
- }
- }
main函数中调用实现:
- myclass.getInstance().ss();
2.1继承太奢侈了,毕竟一个类只能继承一次,还有另一种方式实现单例化
同样自己有一个类myclass2
- class myclass2 {
- public static myclass2 getInstance() {
- return Singleton<myclass2>.getInstance();
- }
- public void ss()
- {
- Console.WriteLine("111");
- }
- }
main函数中调用同2.1
相关链接:http://www.cnblogs.com/jianglai11/archive/2011/10/27/2226881.html
|