iOS常用的設(shè)計(jì)模式

設(shè)計(jì)模式主要大概分成三類:

1.創(chuàng)建型:?jiǎn)卫O(shè)計(jì)模式、抽象工廠設(shè)計(jì)模式

2.結(jié)構(gòu)型:MVC 模式、裝飾器模式、適配器模式、外觀模式、組合模式

3.行為型:責(zé)任鏈設(shè)計(jì)模式、觀察者設(shè)計(jì)模式,備忘錄設(shè)計(jì)模式、命令設(shè)計(jì)模式

今天咱就對(duì)常用的設(shè)計(jì)模式談一下我的觀點(diǎn)

一、最主要也是豬常見的涉及模式MVC模式

這是現(xiàn)在眾多開發(fā)者首選的涉及模式,他這要涉及View,model和controller

View:主要是扮演的界面展示于用戶交互的角色,是模型的可視化的結(jié)果,編程中把所有的UIView對(duì)象以及其子控件都?xì)w結(jié)為視圖。

model:主要扮演的是數(shù)據(jù)的存儲(chǔ),定義了怎么去操作它。

controller:控制器主要扮演的是協(xié)調(diào)所有工作的中間者,它訪問model的數(shù)據(jù)并在view上展示出來(lái),同時(shí)它還能監(jiān)聽事件 并根據(jù)要求來(lái)操作,比如viewcontroller

如下圖(從網(wǎng)上當(dāng)下來(lái)的)

MVC

二、單例

首先單例的概念,從字面意思就可以理解,是單獨(dú)存在的實(shí)例,也就是說該類在整個(gè)工程中只被創(chuàng)建一次,它通常用延時(shí)加載的方式值在第一次調(diào)用的時(shí)候創(chuàng)建一次,比如:[NSUserDefaults standardUserDefaults], [UIApplication sharedApplication], [UIScreen mainScreen], [NSFileManager defaultManager],所有的這些方法都返回一個(gè)單例對(duì)象,實(shí)現(xiàn)步驟如下:

1. 聲明一個(gè)可以新建和獲取單個(gè)實(shí)例對(duì)象的方法

2. 聲明一個(gè)static類型的類變量

3. 聲明一個(gè)只執(zhí)行一次的任務(wù)

4. 調(diào)用dispatch_once執(zhí)行該任務(wù)指定的代碼塊,在該代碼塊中實(shí)例化上文聲明的類變量

5. 返回在整個(gè)應(yīng)用的生命周期中只會(huì)被實(shí)例化一次的變量


三、觀察者模式

首先什么是觀察者模式呢?就是一個(gè)對(duì)象狀態(tài)改變發(fā)送一個(gè)通知,所有對(duì)它進(jìn)行觀察的對(duì)象根據(jù)各自的要求做出相應(yīng)的改變。

觀察者模式下有兩個(gè)機(jī)制

1.notifition機(jī)制

在通知機(jī)制中對(duì)某個(gè)通知感興趣的所有對(duì)象都可以成為接受者。首先,這些對(duì)象需要向通知中心(NSNotificationCenter)發(fā)出addObserver:selector:name:object:消息進(jìn)行注冊(cè),在投送對(duì)象投送通知送給通知中心時(shí),通知中心就會(huì)把通知廣播給注冊(cè)過的接受者。所有的接受者不知道通知是誰(shuí)投送的,不去關(guān)心它的細(xì)節(jié)。投送對(duì)象和接受者是一對(duì)多的關(guān)系。接受者如果對(duì)通知不再關(guān)注,會(huì)給通知中心發(fā)送removeObserver:name:Object:消息解除注冊(cè),以后不再接受通知。(ps:這段話內(nèi)容摘抄自MexiQQ的博客

2.KVO機(jī)制(Key-Value-Observing)

KVO和notifition機(jī)制一樣,都是用來(lái)觀察某一對(duì)象的改變,自身做出相應(yīng)的改變,不同的是該機(jī)制下觀察者的注冊(cè)是在被觀察者的內(nèi)部進(jìn)行的,不同于通知機(jī)制(由觀察者自己注冊(cè)),需要被觀察者和觀察者同時(shí)實(shí)現(xiàn)一個(gè)協(xié)議:NSKeyValueObserving,被觀察者通過addObserver:forKeypath:options:context方法注冊(cè)觀察者,以及要被觀察的屬性。

四、委托模式

委托模式就是一個(gè)類創(chuàng)建一個(gè)委托(代理方法/也叫協(xié)議)并且擁有一個(gè)代理的對(duì)象的指針,代理對(duì)象只需要遵循協(xié)議,并實(shí)現(xiàn)協(xié)議中的方法,這樣就完成了委托模式,通過委托模式可以實(shí)現(xiàn)類與類之間的傳值(回調(diào)傳值),舉個(gè)例子(原理)比如說一個(gè)廣播站需要發(fā)送一條廣播,它就創(chuàng)建一條協(xié)議(能播放它這個(gè)頻段的廣播的收音機(jī)并播放這段廣播)通過這條協(xié)議把廣播傳送出去,所有的收音機(jī),只要有能接收它這個(gè)頻段的收音機(jī)都能成為廣播站的代理對(duì)象,只要播放這個(gè)廣播那么久完成了委托模式。同樣也可以用這個(gè)方法實(shí)現(xiàn)回調(diào)。比如小明媽媽委托小明打醬油,小明向媽媽要跑腿費(fèi)。登錄界面和注冊(cè)界面的回調(diào)傳值。



最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容