iOS設(shè)計(jì)模式:單例模式
單例模式是一個(gè)類(lèi)在系統(tǒng)中只有一個(gè)實(shí)例對(duì)象走净。通過(guò)全局的一個(gè)入口點(diǎn)對(duì)這個(gè)實(shí)例對(duì)象進(jìn)行訪問(wèn)裕坊。在iOS開(kāi)發(fā)中坝撑,單例模式是非常有用的一種設(shè)計(jì)模式蜂厅。
單例模式的三個(gè)特點(diǎn):
1,該類(lèi)只有一個(gè)實(shí)例
2劫乱,該類(lèi)自行創(chuàng)建該實(shí)例(在該類(lèi)內(nèi)部創(chuàng)建自身的實(shí)例對(duì)象)
3织中,向整個(gè)系統(tǒng)公開(kāi)這個(gè)實(shí)例接口
在IOS中使用單例模式的情況:
1.如果說(shuō)創(chuàng)建一個(gè)對(duì)象會(huì)耗費(fèi)很多系統(tǒng)資源,那么此時(shí)采用單例模式衷戈,因?yàn)橹恍枰粋€(gè)實(shí)例狭吼,會(huì)節(jié)省alloc的時(shí)間
2.在IOS開(kāi)發(fā)中,如果很多模塊都要使用同一個(gè)變量脱惰,此時(shí)如果把該變量放入單例類(lèi),則所有訪問(wèn)該變量的調(diào)用變得很容易窿春,否則拉一,只能通過(guò)一個(gè)模塊傳遞給另外一個(gè)模塊,這樣增加了風(fēng)險(xiǎn)和復(fù)雜度
創(chuàng)建單例模式的基本步驟:
1.聲明一個(gè)單例對(duì)象的靜態(tài)實(shí)例旧乞,并初始化為nil
2.聲明一個(gè)類(lèi)的工廠方法蔚润,生成一個(gè)該類(lèi)的實(shí)例,并且只會(huì)生成一個(gè)
3.覆蓋allcoWithZone方法尺栖,確保用戶在alloc?時(shí)嫡纠,不會(huì)產(chǎn)生一個(gè)多余的對(duì)象
4.實(shí)現(xiàn)NSCopying協(xié)議,覆蓋release,autorelease,retain,retainCount方法延赌,以確保只有一個(gè)實(shí)例化對(duì)象
5.在多線程的環(huán)境中除盏,注意使用@synchronized