一例讀懂設計模式之 單例模式

2022-07-31 22:09:23 字數 1404 閱讀 3926

程式設計模式-建立模式-單例模式

意圖:保證乙個類僅有乙個例項或只有指定個數的例項(例項池),並提供乙個訪問它的全域性訪問點。

主要解決:保證例項的單一性

適用於:1當類只能有乙個例項而且客戶可以從乙個眾所周知的訪問點訪問它時。 2當這個唯一例項應該是通過子類化可擴充套件的,並且客戶應該無需更改**就能使用乙個擴充套件的例項時。

場景:定義乙個singtanceclass類 。在程式中只能例項化一次。

思路:

第一步、為了確保例項的唯一性,我們第一步就是要在類的定義中私有化乙個靜態自己。

第二步、我們都知道類的構造方法不寫時,系統會自動給我們生成乙個public的無參構造方法,所以為了避免new出多個物件,我們必須將建構函式手寫,設定為private私有型別

第三步、我們再給外界提供乙個公共靜態方法作為此類的唯一全域性訪問點。在此方法中if判斷,如果此例項為空,則呼叫構造方法初始化,如果不為空,則直接返回此例項。

第四步、執行緒安全是在多執行緒程式中必須考慮的我們可以定義乙個object 的執行緒鎖標記。用來確保多個執行緒不會同時建立出多個此類

定義**如下:

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

namespace

建立模式_1.單例模式

//定義乙個公共方法,用來做該例項的唯一全域性訪問點

public

static

singletonclass getinstance()

console.writeline(

"例項化類為

" + sc.tostring());//

用於演示

}

return sc;//

最終返回本類例項

} }

}

在程式中呼叫如下

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

namespace

建立模式_1.單例模式}}

view code

執行結果

設計模式一之單例模式

單例模式是最常用到的設計模式之一,熟悉設計模式的朋友對單例模式都不會陌生。一般介紹單例模式的書籍都會提到餓漢式和懶漢式這兩種實現方式。但是除了這兩種方式,本文還會介紹其他幾種實現單例的方式,讓我們來一起看看吧。單例模式是一種常用的軟體設計模式,其定義是單例物件的類只能允許乙個例項存在。許多時候整個系...

設計模式一之單例模式

第一種單例模式 餓漢式 建構函式私有化 提供公共的靜態函式 建立物件 public class singleton public static singleton getinstance 第二種單例模式 懶漢式 跟第一種單例模式相比 懶漢式是在需要使用物件的時候才建立物件 建立的時候使用雙重檢查 兼...

設計模式之單例設計模式 一)

目錄 1.懶漢式 2.餓漢式 例子 對於系統中的某些類來說,只有乙個例項很重要,例如,乙個系統中可以存在多個列印任務,但是只能有乙個正在工作的任務 乙個系統只能有乙個視窗管理器或檔案系統 乙個系統只能有乙個計時工具或id 序號 生成器。如在windows中就只能開啟乙個任務管理器。如果不使用機制對視...