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/