单例模式(泛型类)

来源:互联网 发布:c语言实现多线程 编辑:程序博客网 时间:2024/06/10 20:35

 在项目开发过程中,经常会涉及到多个采用单例模式的类,对每个类都要进行单例的处理,甚是不爽。

下面使用泛型类解决了这个问题,只要简单继承就可以了,代码如下:

namespace LogHelper{    using System;    /// <summary>    /// generic for singletons    /// </summary>    /// <typeparam name="T"></typeparam>    public class Singleton<T> where T : new()    {        protected Singleton()        {            if (Instance != null)            {                throw (new Exception("You have tried to create a new singleton class where you should have instanced it. Replace your \"new class()\" with \"class.Instance\""));            }        }        public static T Instance        {            get            {                return SingletonCreator.instance;            }        }        class SingletonCreator        {            static SingletonCreator()            {            }            internal static readonly T instance = new T();        }    }}    
//继承单例类namespace LogHelper{    class HelperClass : Singleton<HelperClass>    {        public HelperClass() { }        public double Add(double a, double b)        {            return a + b;        }    }}

调用方法:

HelperClass.Instance.Add(1,2);


有关单例模式详细信息请参考:单件模式(Singleton Pattern)