單例設計模式-------懶漢式,餓漢式
單例設計模式是一種很常見的設計模式
單例設計模式的特點:
1.單例設計模式保證一個類只有一個實體,
2.要提供一個訪問該類物件實體的全域訪問點,
單例設計模式要點
對一些類來說,只有一個實體是很重要的,例如很多時候對于某個系統只需要擁有一個全域物件,這樣有利于我們協調系統的整體行為,
再比如說某個服務器程式中,該服務器的配置資訊存放在一個檔案中,這些配置資料由一個單例物件統一讀取,然后服務行程中的其他物件
再通過這個單例物件獲取這些配置資訊,從而簡化了在比較復雜的環境下配置管理,
通過上面的介紹,我們可以知道單例模式最重要的就是要保證一個類只有一個實體并且這個類易于被訪問,那么要怎么做才能保證一個類具有一個實體呢?一個全域變數使得一個物件可以被訪問,但是這樣做卻不能防止你實體化多個物件,
一個更好的辦法就是,讓該類自身負責保存它的唯一實體,并且這個類保證沒有其他的實體可以被創建,
怎樣保證一個物件的唯一總結如下:
1.為了避免其它程式過多的建立該類的物件,先禁止其它程式建立該類物件實體(將構造器私有化)
2.為了方便其它程式訪問該類的物件,只好在本類中自定義一個物件,由可知該物件是static的,并對外提供訪問方式,
餓漢式
/// <summary> /// 單列模式一(餓漢式) /// </summary> public class Tests { private static Tests tests = new Tests(); private Tests() { } public static Tests GetTests() { return tests; } }
懶漢式
/// <summary> /// 單列模式二(懶漢式) /// </summary> public class Test { private Test() { } private static volatile Test test = null; public static Test GetTest() { if (test == null) { test = new Test(); } return test; } }
該代碼使用C#實習的
總計
1.餓漢式這種方式加載類物件,我們稱作:預先加載方式,物件預先加載,執行緒是安全的,在類創建好的同時物件生成,呼叫獲得物件實體的方法反應速度快,代碼簡練,
2.懶漢式這種方式加載類物件,我們稱作:延遲加載方式,物件延遲加載,效率高,只有在使用的時候才實體化物件,但若設計不當執行緒會不安全,代碼相對于餓漢式復雜,第一次加載類物件的時候反應不快,
原文鏈接:https://blog.csdn.net/weixin_43258908/article/details/88572455
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/8586.html
標籤:設計模式
上一篇:設計模式的分類
下一篇:設計模式:程式員跳不開的坑
