近來
學過設計模式的開發者都知道Singleton模式
現在讓我們先看一下設計模式一書中對Singleton模式的C++實現(為了方便比較
class Singleton
{
public:
static Singleton* Instance()
{
if(_instance==
{
_instance=new Singleton;
}
return _instance;
}
protected:
Singleton();
Private:
Static Singleton* _instance;
};
Stington* Singleton::_instance=
這裡我不想對上述的代碼作解釋
為了更好的理解C#
class Singleton
{
public Singleton Instance()
{
if(_instace==null)
{
synchronized (Class
{
if (_instance == null)
{
_instance = new Singleton();
}
}
}
return _instance;
}
protected Singleton() {}
private static Singleton _instance = null;
}
在上述的Java代碼中使用了雙重檢測機制
首先
class Singleton
{
public static Singleton Instance()
{
if(_instance==null)
{
lock (typeof(Singleton))
{
if(_instace==null)
{
_instance=new Singleton();
}
}
}
return _instance;
}
protected Singleton(){}
private static volatile Singleton _instance=null;
}
現在
sealed class Singleton
{
private Singleton();
public static readonly Singleton Instance=new Singleton();
}
非常吃驚是不是
注意到
本文不是要討論設計模式
From:http://tw.wingwit.com/Article/program/net/201311/12319.html