設計模式 單例模式

2021-08-10 17:07:46 字數 1980 閱讀 7753

一:什麼是設計模式:是一套被反覆使用,多人知曉的,經過分類編目的,**設計經驗的總結

二:使用設計模式的目的:為了可重用**,讓**更容易讓他人理解,保證**的可靠性

1.單例模式:

1.單例模式目的:保證了應用程式中某個物件的例項有且只有乙個,比如配置檔案,快取,日誌物件等

2.單例模式的分類:

1.餓漢模式:

1.實現步驟:

1.自定義乙個私有化的建構函式,不允許外部可以直接建立物件例項

2.建立乙個使用private static修飾的唯一例項

3.為建立的唯一例項物件提供外部可以呼叫他的方法,也就是get方法

2.**實現:

public class singleton

//2.在該類的內部建立乙個唯一例項,這裡用static修飾是因為可以在其他類中同過類名.的方式訪問到建立的例項

//private static singleton instance = new singleton();

//2.一般為了安全起見,一般會把我們的類成員變數私有化,所以要為該例項建立外部可以呼叫他的方法,也就是第三步

private static singleton instance = new singleton();

//3.為私有化的例項提供外部可以呼叫他的方法,也就是提供了乙個get方法

public static singleton getinstance()

}

3.總結:在類中建立乙個唯一例項,該例項在類載入的時候就會例項化

2.懶漢模式:

1.實現步驟:

1.私有化共造方法,不允許外部直接建立物件

2.宣告乙個使用private static修飾的唯一例項,而不是建立

3.提供外部可以呼叫的方法,注意的是這裡要進行判斷唯一例項是否為空,因為第二部只是宣告了乙個例項,而不是建立

2.**實現:

public class singleton2

//2.宣告乙個唯一例項,而不是建立

private static singleton2 singleton;

//3.為建立的唯一例項提供外部可以呼叫的方法

private static singleton2 getsingleton()

return singleton;

}

}

3.總結:宣告乙個唯一例項,類在載入的時候不會例項化,而是在具體呼叫的時候建立

3.餓漢模式和懶漢模式的區別:

1.類載入速度:因為餓漢模式在類載入時就例項化了乙個物件,所以類載入速度較慢,而懶漢模式則是在呼叫物件時才例項化唯一例項,所以類載入速度比較快

2.獲取物件速度:餓漢模式獲取物件時比較快,因為在類載入時已經例項化了,而懶漢模式在獲取物件時比較慢,因為物件在獲取時被例項化

3.執行緒安全:餓漢模式是執行緒安全的,懶漢模式是執行緒不安全的

4.補充

:因為上面的懶漢模式中的get方法會造成執行緒不安全,所以要在get方法加上synchronized

設計模式 單例模式

單例模式 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的序列生成等.但單例的使用需要謹慎,特別是在需要作負載均衡的地方,因為這種程式級的單例模式實際上只能保證在乙個應用中為單例.如果被多個應用載入,還是會...