設計模式------單體模式
又叫單一例項模式,宗旨在於確保某個類只有唯一的一個例項,並且為該類提供一個全域性的訪問點。
實現該模式的方法,主要有兩種:單執行緒的和多執行緒的。
單執行緒:
程式碼如下:
public class SingletonPattern {
private static SingletonPattern single = null;
//防止直接產生一個的例項
private SingletonPattern() {}
public static SingletonPattern getInstance()
{
if(null == single)
{
single = new SingletonPattern();
}
return single;
}
}
外部在生成該類的物件時,由於single是靜態物件,通過呼叫getInstance()來獲取該類物件,如果single已經存在則直接返回,否則建立新物件。
這樣,在單執行緒應用中,能夠保證SingletonPattern類的物件時唯一的。
但是多執行緒中就不能保證。
多執行緒:
程式碼如下:
public class SingletonPattern {
private static SingletonPattern single = null;
private static object synclock = new object();
//防止直接產生一個的例項
private SingletonPattern() {}
public static SingletonPattern getInstance()
{
lock(synclock)
{
if(null == single)
{
single = new SingletonPattern();
}
}
return single;
}
}
在該方法中,多執行緒的情況也可以保證SingletonPattern物件的唯一性。
注意:在某些情況下,這麼使用單一例項模式,不能達到單一例項的目的,比如跨伺服器的情況等。這些需要在實際情況中去靈活執行。
另外,可以使用該模式,但是不要過度使用該模式。