Swift中定義單例的方法實(shí)例
什么是單例
單例模式是設(shè)計(jì)模式中最簡單的一種,甚至有些模式大師都不稱其為模式,稱其為一種實(shí)現(xiàn)技巧,因?yàn)樵O(shè)計(jì)模式講究對象之間的關(guān)系的抽象,而單例模式只有自己一個對象。
單例模式(Singleton Pattern),也叫單子模式,是一種常用的軟件設(shè)計(jì)模式。 在應(yīng)用這個模式時,單例對象的類必須保證只有一個實(shí)例存在。
單實(shí)例Singleton設(shè)計(jì)模式可能是被討論和使用的最廣泛的一個設(shè)計(jì)模式了,這可能也是面試中問得最多的一個設(shè)計(jì)模式了。這個設(shè)計(jì)模式主要目的是想在整個系統(tǒng)中只能出現(xiàn)一個類的實(shí)例。這樣做當(dāng)然是有必然的,比如你的軟件的全局配置信息,或者是一個Factory,或是一個主控類,等等。
如何在 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)用類方法進(jìn)行引用
NetworkManager.shared()
總結(jié)
以上就是這篇文章的全部內(nèi)容了,希望本文的內(nèi)容對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,如果有疑問大家可以留言交流,謝謝大家對我們的支持。
參考自: What Is a Singleton and How To Create One In Swift
上一篇:Swift利用純代碼實(shí)現(xiàn)時鐘效果實(shí)例代碼
欄 目:Swift
本文標(biāo)題:Swift中定義單例的方法實(shí)例
本文地址:http://mengdiqiu.com.cn/a1/Swift/11963.html
您可能感興趣的文章
- 01-11swift中defer幾個簡單的使用場景詳解
- 01-11Swift利用Decodable解析JSON的一個小問題詳解
- 01-11Swift中defer關(guān)鍵字推遲執(zhí)行示例詳解
- 01-11Swift中初始化init的方法小結(jié)
- 01-11Swift利用純代碼實(shí)現(xiàn)時鐘效果實(shí)例代碼
- 01-11Swift中排序算法的簡單取舍詳解
- 01-11Swift如何為設(shè)置中心添加常用功能
- 01-11Swift Json實(shí)例詳細(xì)解析
- 01-11Swift利用指紋識別或面部識別為應(yīng)用添加私密保護(hù)功能
- 01-11Swift 4.0中如何引用3.0的第三方庫


閱讀排行
本欄相關(guān)
- 01-11Swift利用Decodable解析JSON的一個小問題
- 01-11swift中defer幾個簡單的使用場景詳解
- 01-11Swift中初始化init的方法小結(jié)
- 01-11Swift中defer關(guān)鍵字推遲執(zhí)行示例詳解
- 01-11Swift利用純代碼實(shí)現(xiàn)時鐘效果實(shí)例代碼
- 01-11Swift中定義單例的方法實(shí)例
- 01-11Swift中排序算法的簡單取舍詳解
- 01-11Swift Json實(shí)例詳細(xì)解析
- 01-11Swift如何為設(shè)置中心添加常用功能
- 01-11Swift利用指紋識別或面部識別為應(yīng)用添
隨機(jī)閱讀
- 01-10delphi制作wav文件的方法
- 08-05織夢dedecms什么時候用欄目交叉功能?
- 01-10使用C語言求解撲克牌的順子及n個骰子
- 04-02jquery與jsp,用jquery
- 08-05DEDE織夢data目錄下的sessions文件夾有什
- 01-11ajax實(shí)現(xiàn)頁面的局部加載
- 01-10C#中split用法實(shí)例總結(jié)
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 08-05dedecms(織夢)副欄目數(shù)量限制代碼修改
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文