iOS 21種設計模式之單例(Singleton)

2021-07-27 08:32:29 字數 1212 閱讀 9435

感謝《pro objective-c design pattern for ios》一書,這個部落格系列由很多靈感源自次書。同時,也感謝wiki以及一些部落格博主。每篇文章最後,都會列出參考鏈結。

設計模式是為了解決一類問題而出現的,要深刻理解某個模式的應用場景,優點,缺點。千萬不要為了使用而實用,那樣很可能寫出不倫不類的東西。

對於同一種模式,每個人的理解都不同,能解決實際問題才是關鍵,所以,一定要搞清楚每種設計模式究竟解決了那一類問題,對於設計模式,可以首先理解設計出的介面,再理介面內部的實現

保證類只有乙個例項,並且提供乙個訪問它的全域性訪問點

//客戶端**

let instance = singletonlass.sharedinstance()

在c++中,可以讓建構函式為private,隱藏對應介面,但是在ios開發中不需要,也很難做到。

唯一的例項只能通過繼承來擴充套件,並且擴充套件後客戶端的**不需要任何修改

關於單例模式的使用,objc.io的這篇文章講的很好,摘取一些觀點

單例的生命週期難以控制,雖然可以在單例中提供方法設為nil進行釋放。

舉個例子吧,

在sandbox中建立乙個log目錄,把使用者行為log到本地;

維護記憶體中的log緩衝區(雖然log相關的操作都在後台,但是還是不想頻繁的於物理儲存互動);

同伺服器進行同步,同時根據同步的結果清理檔案;

在必要的時候,能根據後台返回資料禁止log;

那麼,如何設計這個類呢?

所以,這個類使用了單例。同時,提供類函式這樣的介面(暫時沒講到介面相關的設計模式)。

+ (instancetype)sharedsingleton );

return _sharedsingleton;

}

注意,在swift中由let宣告的類常量支援惰性初始化(lazy),並且是執行緒安全的

class singletona
當然,也可以像objective c中那麼寫

class

singleton

dispatch_once(&static.oncetoken)

return static.instance!

}}

iOS 21種設計模式之原型模式Prototype

我的stackoverflow 感謝 pro objective c design pattern for ios 一書,這個部落格系列由很多靈感源自次書。同時,也感謝wiki以及一些部落格博主。每篇文章最後,都會列出參考鏈結。物件建立模式 設計模式是為了解決一類問題而出現的,要深刻理解某個模式的應...

21種設計模式之 單例模式

單例模式 使用場合 適合乙個類中只有乙個例項的情況。比如任務管理器。單例模式的必要要素 a 私有的建構函式 b 私有的靜態靜態字段 c 以自己為返回值靜態 公共的方法 單例在使用場景的不同又分為了餓漢單例和懶漢單例模式 餓漢單例模式在類的載入時就把類的例項交給了引用 懶漢單例模式只有取得類的例項方法...

iOS設計模式之單例模式

單例模式 總是返回自己的同乙個例項,它提供了對類的物件所提供的資源的全域性訪問點,並且返回的例項只能被例項化一次.單例設計模式設計需要考慮的兩個問題 1 發起呼叫的物件不能以其他分配方式例項化單例物件,否則,就有可能建立單例類的多個例項 2 對單例物件例項化的限制應該與引用計數記憶體模型共存.sin...