玩转iOS开发:《iOS设计模式 — 单例模式》
作者感言
有一段時(shí)間沒(méi)有發(fā)博客了, 剛好現(xiàn)在忙完項(xiàng)目的需求, 現(xiàn)在可以閑下來(lái)寫(xiě)寫(xiě)博客, 順便自己給自己復(fù)習(xí)鞏固一下知識(shí), 不過(guò)我在這里又要吐槽一句, 項(xiàng)目中遇到了一個(gè)單例的問(wèn)題, 讓我感到非常的蛋疼, 寫(xiě)這個(gè)單例的人只是單純了為了寫(xiě)單例而寫(xiě)單例, 沒(méi)有想到會(huì)發(fā)生什么, 現(xiàn)在讓我們一起來(lái)看看什么叫單例吧.
最后: 如果你有更好的建議或者對(duì)這篇文章有不滿的地方, 請(qǐng)聯(lián)系我, 我會(huì)參考你們的意見(jiàn)再進(jìn)行修改, 聯(lián)系我時(shí), 請(qǐng)備注單例模式 如果覺(jué)得好的話, 希望大家也可以打賞一下~嘻嘻~祝大家學(xué)習(xí)愉快~謝謝~
Cain(羅家輝)
zhebushimengfei@qq.com: 聯(lián)系方式
350116542: 騰訊QQ
簡(jiǎn)介
這是一張單例的UML圖, 非常簡(jiǎn)單明了的講解單例類(lèi)到底是怎么回事, 通常單例是用來(lái)作為管理中心, 或者是通知中心, 比如在iOS當(dāng)中的NSNotificationCenter, [[UIApplication sharedApplication] statusBarStyle], NSUserDefaults, [NSFileManager defaultManager]等等都是單例, 單例類(lèi)有幾個(gè)特征.
- 系統(tǒng)當(dāng)中只有一個(gè)實(shí)例
- 易于外界訪問(wèn)
- 防止子類(lèi)繼承
- 共享信息
準(zhǔn)備工作
首先, 我們先來(lái)建一個(gè)WorkSpace, 這樣子方便我們以后多添加工程, 因?yàn)閱卫J街皇俏覀兊拈_(kāi)始.
添加單例工程
創(chuàng)建完WorkingSpace之后, 我們就來(lái)添加SingletonPattern(單例)的工程
創(chuàng)建單例類(lèi)
現(xiàn)在我們來(lái)創(chuàng)建一個(gè)叫UserInfoManager單例類(lèi)
聲明一個(gè)類(lèi)方法用于外界訪問(wèn)
接下來(lái)我們?nèi)?shí)現(xiàn)這個(gè)類(lèi)方法就好了
看起來(lái), 我們好像搞定了整個(gè)單例模式了, 下面讓我們來(lái)試試效果.
打印出來(lái)的效果好像是只有一個(gè), 但實(shí)際上并不是的, 我們?cè)賮?lái)看看
發(fā)現(xiàn)這個(gè)類(lèi)還是可以初始化的, 并且是另外開(kāi)辟了內(nèi)存空間來(lái)存儲(chǔ)的, 這就很尷尬了, 說(shuō)好的只有一個(gè)實(shí)例呢???
我在這里說(shuō)一句, 施主莫怕, 等貧僧跳大, 繼續(xù)回到單例類(lèi)當(dāng)中, 添加幾個(gè)判斷就好了
口說(shuō)無(wú)憑, 我們來(lái)看看運(yùn)行效果
這下子, 可以說(shuō)明是只有一個(gè)實(shí)例了吧, 下面再來(lái)看看子類(lèi)是否能繼承
好了, 現(xiàn)在單例所需的
- 易于外界訪問(wèn)
- 系統(tǒng)當(dāng)中只有一個(gè)實(shí)例
- 防止子類(lèi)繼承
我們都搞定, 醬紫我們就完成了一個(gè)單例類(lèi)的創(chuàng)建啦
工程地址
項(xiàng)目地址: github.com/CainRun/Des…
總結(jié)
以上是生活随笔為你收集整理的玩转iOS开发:《iOS设计模式 — 单例模式》的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 支持向量机libsvm实战入门
- 下一篇: JAVA设计模式--结构型模式