一、MVC設(shè)計(jì)模式
1、模式分析
Models(模型):數(shù)據(jù)層,負(fù)責(zé)處理數(shù)據(jù)的數(shù)據(jù)接口層;
Views(視圖):展示層,以UI開頭的類基本屬于Views;
Controller:重控制器,負(fù)責(zé)Model與View之間連接,當(dāng)用戶對(duì)View操作時(shí)它負(fù)責(zé)去修改相應(yīng)的model;當(dāng)Model值發(fā)生變化時(shí)它負(fù)責(zé)更新對(duì)應(yīng)的View;
2、性能分析
劃分層次:View和Model實(shí)現(xiàn)了分離,但View和Controller耦合太厲害;
可測(cè)性:劃分不清楚,導(dǎo)致只有Model可進(jìn)行測(cè)試;
易用性:相較于其他設(shè)計(jì)模式,代碼量少,易上手。
3、模型分析圖(摘自網(wǎng)絡(luò))

二、MVP設(shè)計(jì)模式
1、模式分析
Models:數(shù)據(jù)層
ViewController:視圖控制器,實(shí)際扮演View的角色
Presenter:只負(fù)責(zé)更新數(shù)據(jù)和視圖狀態(tài)
2、性能分析
劃分層次:劃分了Presenter和Model以及簡(jiǎn)單的視圖
可測(cè)性:可通過(guò)View來(lái)測(cè)試大部分的業(yè)務(wù)邏輯
易用性:思路清晰,但代碼量較多
3、模型分析圖(摘自網(wǎng)絡(luò))

三、MVVM設(shè)計(jì)模式
1、模式分析
Model:數(shù)據(jù)訪問(wèn)層
View:UI界面
ViewModel:View的抽象,負(fù)責(zé)View與Model之間的信息轉(zhuǎn)換
2、性能分析
劃分層次:劃分了Model、View、以及ModelView,與其他設(shè)計(jì)模式主要區(qū)別在于ModelView的劃分。
可測(cè)性: 因?yàn)閂iewModel對(duì)View是分離的,測(cè)試簡(jiǎn)單。
易用性: 簡(jiǎn)潔、易用性較強(qiáng)。
3、模型分析圖(摘自網(wǎng)絡(luò))

四、三種設(shè)計(jì)模式總結(jié)(附分析表)

1、就開發(fā)速度而言,Cocoa MVC是最好的架構(gòu)選擇方案
2、MVP可測(cè)試性強(qiáng)、代碼量大
3、MVVM集合了上述方法的有點(diǎn),可測(cè)試性很強(qiáng)。
五、ReactiveCocoa
結(jié)合了函數(shù)式編程、響應(yīng)式編程使用RAC來(lái)解決問(wèn)題,不需考慮調(diào)用順序,直接考慮結(jié)果,代碼高聚合,方便管理。
當(dāng)某些事件響應(yīng)時(shí),可通過(guò)RAC來(lái)處理某些業(yè)務(wù)邏輯,比如按鈕的點(diǎn)擊使用action,ScrollView滾動(dòng)使用delegate,屬性值改變使用KVO等系統(tǒng)提供的方式。
六、體會(huì)
通過(guò)在網(wǎng)上查找ReactiveCocoa的相關(guān)資料接觸到RACSiganl信號(hào)類,之前未曾接觸使用過(guò),還是存在一些難度,不能透徹了解。對(duì)MVC、MVP、MVVM這三種設(shè)計(jì)模式已有一定了解,希望在以后能夠結(jié)合實(shí)際項(xiàng)目,進(jìn)行學(xué)以致用。
七、重點(diǎn)參考資料
<1>http://www.ruanyifeng.com/blog/2015/02/mvcmvp_mvvm.html
<2>http://blog.csdn.net/li_shuang_ls/article/details/50176891
<3>http://www.cocoachina.com/ios/20160108/14916.html