Swift中定義單例的方法實(shí)例
什么是單例
單例模式是設(shè)計(jì)模式中最簡(jiǎn)單的一種,甚至有些模式大師都不稱(chēng)其為模式,稱(chēng)其為一種實(shí)現(xiàn)技巧,因?yàn)樵O(shè)計(jì)模式講究對(duì)象之間的關(guān)系的抽象,而單例模式只有自己一個(gè)對(duì)象。
單例模式(Singleton Pattern),也叫單子模式,是一種常用的軟件設(shè)計(jì)模式。 在應(yīng)用這個(gè)模式時(shí),單例對(duì)象的類(lèi)必須保證只有一個(gè)實(shí)例存在。
單實(shí)例Singleton設(shè)計(jì)模式可能是被討論和使用的最廣泛的一個(gè)設(shè)計(jì)模式了,這可能也是面試中問(wèn)得最多的一個(gè)設(shè)計(jì)模式了。這個(gè)設(shè)計(jì)模式主要目的是想在整個(gè)系統(tǒng)中只能出現(xiàn)一個(gè)類(lèi)的實(shí)例。這樣做當(dāng)然是有必然的,比如你的軟件的全局配置信息,或者是一個(gè)Factory,或是一個(gè)主控類(lèi),等等。
如何在 swift 中創(chuàng)建單例
在 swift 中有以下這兩種方式可以創(chuàng)建單例
全局變量的方式
let sharedNetworkManager = NetworkManager(baseURL: API.baseURL) class NetworkManager { // MARK: - Properties let baseURL: URL // Initialization init(baseURL: URL) { self.baseURL = baseURL } }
使用該全局變量進(jìn)行引用
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool { print(sharedNetworkManager) return true }
靜態(tài)屬性及私有化構(gòu)造方法的方式
class NetworkManager { // MARK: - Properties private static var sharedNetworkManager: NetworkManager = { let networkManager = NetworkManager(baseURL: API.baseURL) // Configuration // ... return networkManager }() // MARK: - let baseURL: URL // Initialization private init(baseURL: URL) { self.baseURL = baseURL } // MARK: - Accessors class func shared() -> NetworkManager { return sharedNetworkManager } }
直接調(diào)用類(lèi)方法進(jìn)行引用
NetworkManager.shared()
總結(jié)
以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,如果有疑問(wèn)大家可以留言交流,謝謝大家對(duì)腳本之家的支持。
相關(guān)文章
Swift調(diào)用Objective-C編寫(xiě)的API實(shí)例
這篇文章主要介紹了Swift調(diào)用Objective-C編寫(xiě)的API實(shí)例,介紹的比較全面和詳細(xì),對(duì)Objective-C代碼的重復(fù)利用有極大好處,的朋友可以參考下2014-07-07Swift利用CoreData如何存儲(chǔ)多種數(shù)據(jù)類(lèi)的通訊錄
這篇文章主要給大家介紹了關(guān)于Swift利用CoreData如何存儲(chǔ)多種數(shù)據(jù)類(lèi)的通訊錄的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。2017-12-12Swift編程中的一些類(lèi)型轉(zhuǎn)換方法詳解
這篇文章主要介紹了Swift編程中的一些類(lèi)型轉(zhuǎn)換方法詳解,是Swift入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-11-11Swift仿微信語(yǔ)音通話最小化時(shí)后的效果實(shí)例代碼
這篇文章主要介紹了Swift仿微信語(yǔ)音通話最小化時(shí)后的效果的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2021-03-03SwiftUI?引導(dǎo)頁(yè)界面實(shí)現(xiàn)示例
這篇文章主要為大家介紹了SwiftUI?引導(dǎo)頁(yè)界面實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-09-09Swift設(shè)計(jì)思想Result<T>與Result<T,?E:?Error>類(lèi)型解析
這篇文章主要為大家介紹了Swift設(shè)計(jì)思想Result<T>與Result<T,?E:?Error>的類(lèi)型示例解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-11-11簡(jiǎn)陋的swift carthage copy-frameworks 輔助腳本代碼
下面小編就為大家分享一篇簡(jiǎn)陋的swift carthage copy-frameworks 輔助腳本代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-01-01