MVC, MVP, MVVM記要

iOS的MVC各層職責(zé)

controller層(VC):
生成view,然后組裝view
響應(yīng)View的事件和作為view的代理
調(diào)用model的數(shù)據(jù)獲取接口,拿到返回?cái)?shù)據(jù),處理加工,渲染到view顯示
處理view的生命周期
處理界面之間的跳轉(zhuǎn)

model層:
業(yè)務(wù)邏輯封裝
提供數(shù)據(jù)接口給controller使用
數(shù)據(jù)持久化存儲(chǔ)和讀取
作為數(shù)據(jù)模型存儲(chǔ)數(shù)據(jù)

view層:
界面元素搭建,動(dòng)畫效果,數(shù)據(jù)展示,
接受用戶操作并反饋視覺效果

MVP各層職責(zé)

VC層
view的布局和組裝
view的生命周期控制
通知各個(gè)P層去獲取數(shù)據(jù)然后渲染到view上面展示

controller層
生成view,實(shí)現(xiàn)view的代理和數(shù)據(jù)源
綁定view和presenter
調(diào)用presenter執(zhí)行業(yè)務(wù)邏輯

model層
和MVC的model層類似

view層
監(jiān)聽P層的數(shù)據(jù)更新通知, 刷新頁面展示.(MVC里由C層負(fù)責(zé))
在點(diǎn)擊事件觸發(fā)時(shí), 調(diào)用P層的對(duì)應(yīng)方法, 并對(duì)方法執(zhí)行結(jié)果進(jìn)行展示.(MVC里由C層負(fù)責(zé))
界面元素布局和動(dòng)畫
反饋用戶操作

Presenter層職責(zé)
實(shí)現(xiàn)view的事件處理邏輯,暴露相應(yīng)的接口給view的事件調(diào)用
調(diào)用model的接口獲取數(shù)據(jù),然后加工數(shù)據(jù),封裝成view可以直接用來顯示的數(shù)據(jù)和狀態(tài)
處理界面之間的跳轉(zhuǎn)(這個(gè)根據(jù)實(shí)際情況來確定放在P還是C)

因?yàn)镸VP中的PV關(guān)系理論上是多對(duì)多的, 所以P層通常都是由MVP的上層直接分配而不是在C層默認(rèn)創(chuàng)建, 這樣在邏輯變動(dòng)布局不變的情況下, 上層只需要分配一個(gè)新的P層就行了, 同理, 如果邏輯不變布局變了, 上層就替換V層即可.

更標(biāo)準(zhǔn)的寫法是針對(duì)每個(gè)M都有對(duì)應(yīng)V,C,P, V負(fù)責(zé)布局 ,C負(fù)責(zé)和上層交互(某個(gè)業(yè)務(wù)場(chǎng)景的具體需求, 比如HUD), P負(fù)責(zé)業(yè)務(wù)邏輯(各種格式化, 各種命令),

MVVM各層職責(zé)

MVVM各層的職責(zé)和MVP的類似,VM對(duì)應(yīng)P層,只是在MVVM的View層多了數(shù)據(jù)綁定的操作


深入分析MVC、MVP、MVVM、VIPER: http://www.ximublog.cn/mvc-mvp-mvvm-viper/

?著作權(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)容