在项目开发过程中,经常会涉及到多个采用单例模式的类,对每个类都要进行单例的处理,甚是不爽。
下面使用泛型类解决了这个问题,只要简单继承就可以了,代码如下:
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)