設計模式 之單例模式

2022-02-12 07:44:16 字數 1173 閱讀 2651

單例模式

定義:保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。

通常我們可以讓乙個全域性變數使得乙個物件被訪問,但是不能防止你例項化多個物件,乙個最好的辦法就是:讓類自身負責儲存它的唯一例項。這個類可以保證沒有其他例項可以被建立,並且它可以提供乙個訪問該例項的方法

單例模式除了可以保證唯一例項外,還可以:

單例模式一位singleton類封裝它的唯一例項,還可以嚴格地控制客戶怎樣訪問它以及何時訪問它。簡單的說就是對唯一例項的受控訪問。

多執行緒時的單例

在多執行緒程式中,多個執行緒同時,注意要是同時訪問singleton類,呼叫getinstance方法,會可能造成建立多個例項

這裡就需要把臨界區的**給鎖起來,保證只有乙個執行緒在臨界區之中,如果其他執行緒試圖進入鎖定**,則它將一直等待,直到該物件被釋放

雙重鎖定

為了不讓執行緒每次都加鎖,而只在實力未建立的時候在加鎖處理

靜態初始化

c#與公共語言執行庫也提供了一種「靜態初始化」方法,這種方法不需要開發人員顯示的編寫執行緒安全**,既可以解決多執行緒下它是不安全的問題。

總結:靜態初始化的方式是在自己被載入時就將自己例項化了,所以被形象的稱之為餓漢單例模式

原先的模式是要在第一次被引用時,才會講自己例項化,所以被形象的稱之為懶漢單例模式

餓漢單例模式:一載入就例項化物件,所以要提前占用系統資源。以空間換取時間

懶漢單例模式:面臨著多執行緒訪問的安全性問題,需要做雙重鎖定這樣的處理才可以保證安全,以時間換空間,也就是每次獲取例項都會進行判斷,看是否需要建立例項,浪費判斷的時間

。從c#語言來講,餓漢單例模式已經足夠滿足我們的需求了。

設計模式之單例模式

前一段時間買了一本秦小波寫的 設計模式之禪 網上對這書的評價很高。現在還沒有看很多,但是有些地方頗有感觸,也並不是所有的地方都能看懂,但是會慢慢研究的。自己對於設計模式的感覺就是乙個字 牛!感覺會23種設計模式並且會熟練運用的人,真的就是大師級的牛人了,設計模式是乙個專案主管或者架構師一定要會的東西...

設計模式之單例模式

package com.xie.singleton public class singleton 提供乙個共有的靜態的入口方法 public static singleton getinstance 懶漢式 延遲載入 提供乙個私有的靜態的成員變數,但不做初始化 private static sing...

設計模式之 單例模式

單例模式 singleton 保證乙個類僅有乙個例項,並提供乙個訪問它的全域性訪問點。單例模式 單件模式 使用方法返回唯一的例項 public class singleton private static singleton instance public static singleton geti...