設計模式 單例模式

2021-08-16 10:03:32 字數 909 閱讀 8433

一、定義:顧名思義,單例單例,也就是只允許有乙個例項物件。

那怎麼去控制只允許有乙個例項物件呢?答案就是將其建構函式私有化(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的序列生成等.但單例的使用需要謹慎,特別是在需要作負載均衡的地方,因為這種程式級的單例模式實際上只能保證在乙個應用中為單例.如果被多個應用載入,還是會...