一、定義:顧名思義,單例單例,也就是只允許有乙個例項物件。
那怎麼去控制只允許有乙個例項物件呢?答案就是將其建構函式私有化(private),使外界不能去new這個類的物件。外界想要獲取該類的物件,只能通過該類的靜態方法去獲取,從而達到控制只有乙個例項的目的。
二、單例模式的實現
實現單例的方式有兩種:
1.懶漢模式
2.餓漢模式
那什麼叫懶漢模式、什麼叫餓漢模式呢?顧名思義,懶漢就是我要的時候你才去做(太懶了),餓漢就是一上來就搶下「饅頭」(即 一上來就把物件給new 好)。
下面我們來看看**:
/*
* 懶漢模式 非執行緒安全
*/class singlelz
public static singlelz getintencelz() else }}
// 懶漢式 執行緒安全
class singlelzy
public static singlelzy getintencelz()
return singlelzy;
}} return singlelzy; }}
/* * 餓漢模式 執行緒安全
*/class singlehanger
public static singlehanger getintencehanger()
}
由上我們可以看出懶漢式的優點是沒有的話才去new,比較節省記憶體,但是缺點是必須得給建立物件的地方加鎖,才能保證在多執行緒的情況下才是安全的,所以在效率上就沒有餓漢那麼高,因為餓漢式是類載入之後就進行了物件的建立,且天生執行緒安全。只是一來就new,相對懶漢式來說,就比較占用記憶體。各有優缺點。但在開發中一般使用餓漢式,因為效率高且天生執行緒安全嘛。 設計模式 單例模式
單例模式 singleton pattern 是乙個比較簡單的模式,其定義如下 ensure a class has only one instance,and provide a golbal point of acess to it.確保某乙個類只有乙個例項,而且自行例項化並且向整個系統提供這個...
設計模式 單例模式
class testsingleton static public function instance return self testsingleton private function clone public function setsinvar sinvar public function ...
設計模式 單例模式
單例模式的目的是保證類在系統中只被例項化一次,由該唯一的例項來為系統提供服務.單例模式主要用於保證服務的統一,比如獲取統一的編號服務,模仿oracle的序列生成等.但單例的使用需要謹慎,特別是在需要作負載均衡的地方,因為這種程式級的單例模式實際上只能保證在乙個應用中為單例.如果被多個應用載入,還是會...