單例設計模式逐步講解

2022-04-08 02:59:00 字數 1313 閱讀 1936

單例設計模式: 

instance例項 

singleton patten單例模式

1.類圖分為三部分,依次是類名、屬性、方法

2.以結尾的為注釋資訊

3.修飾符+代表public,-代表private,#代表protected,什麼都沒有代表包可見。

4.帶下劃線的屬性或方法代表是靜態的。

5.對類圖中物件的關係不熟悉的朋友可以參考文章:設計模式中類的關係。

單例模式應該是23種設計模式中最簡單的一種模式了。它有以下幾個要素: 

?私有的構造方法 

?指向自己例項的私有靜態引用 

?以自己例項為返回值的靜態的公有的方法

單例模式的優點: 

?在記憶體中只有乙個物件,節省記憶體空間。 

?避免頻繁的建立銷毀物件,可以提高效能。 

?避免對共享資源的多重占用。 

?可以全域性訪問。

適用場景:由於單例模式的以上優點,所以是程式設計中用的比較多的一種設計模式。我總結了一下我所知道的適合使用單例模式的場景: 

?需要頻繁例項化然後銷毀的物件。 

?建立物件時耗時過多或者耗資源過多,但又經常用到的物件。 

?有狀態的工具類物件。 

?頻繁訪問資料庫或檔案的物件。 

?以及其他我沒用過的所有要求只有乙個物件的場景。  

單例模式注意事項: 

?只能使用單例類提供的方法得到單例物件,不要使用反射,否則將會例項化乙個新物件。 

?不要做斷開單例類物件與類中靜態引用的危險操作。 

?多執行緒使用單例使用共享資源時,注意執行緒安全問題。   

singleton 模式的實現

在objective-c中,實現singleton模式,只需實現以下四個步驟:

1.  為 singleton object 實現乙個靜態例項,並初始化,然後設定成nil;

2. 實現乙個例項構造方法 (通常命名為 sharedinstance 或者 sharedmanager) 檢查上面宣告的靜態例項是否為nil,如果是,則新建並返回乙個本類例項;

3. 重寫allocwithzone: 方法,用來保證當其他人直接使用 alloc 和init 試圖獲得乙個新例項的時候,不會產生乙個新的例項。

4. 適當地實現  allocwithzone,  copywithzone,  release 和 autorelease。 

dispatch_once的作用是在整個應用程式生命週期只執行一次**塊(^),並且意味著執行緒同步。使用了dispatch_once就不必使用類似@synchronized的語句。

dispatch_once函式能夠記錄該**塊是否被呼叫過。

單例設計模式小白逐步分析

1 package com.test.singleinstance class singleinstance public class singleinstancetest else 結果為 不是同乙個物件2 package com.test.singleinstance class singlei...

單例模式講解

單例模式被當作職責模式,他用來在應用程式中建立乙個單一的功能訪問點。它將建立物件的控制權委託到一 個單一的訪問點上。在任何時候,應用程式中都只會有這個類僅有的乙個例項存在。這可以防止我們去開啟資料庫的多個連線或者不必要得使用多餘的系統資源。在 更加複雜的系統中,使用單例模式在維持應用程式狀態的同步方...

單例設計模式(餓漢單例設計模式 懶漢單例設計模式)

1.什麼是單例 單例的意思是乙個類永遠只存在乙個物件,不能建立多個物件。2.為什麼要用單例 開發中有很多的物件我們只需要乙個,例如虛擬機器物件,任務管理器物件 物件越多越佔記憶體,有時候只需要乙個物件就可以實現業務,單例可以節省記憶體空間。3.如何實現單例 單例的實現方式有 餓漢單例設計模式 通過類...