当开发人员想将一个类以单例模式实现时,可以在类中写单例模式的代码实现。
当时如果项目中存在多个单例模式的类时,我们可以采取每个类都写的方式。
但是更聪明的方法是采取单例模式的泛型实现。
以下是一个简单的控制台泛型单例模式的例子。
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