MVC, MVP, MVVM记要

iOS的MVC各层职责

controller层(VC):
生成view,然后组装view
响应View的事件和作为view的代理
调用model的数据获取接口,拿到返回数据,处理加工,渲染到view显示
处理view的生命周期
处理界面之间的跳转

model层:
业务逻辑封装
提供数据接口给controller使用
数据持久化存储和读取
作为数据模型存储数据

view层:
界面元素搭建,动画效果,数据展示,
接受用户操作并反馈视觉效果

MVP各层职责

VC层
view的布局和组装
view的生命周期控制
通知各个P层去获取数据然后渲染到view上面展示

controller层
生成view,实现view的代理和数据源
绑定view和presenter
调用presenter执行业务逻辑

model层
和MVC的model层类似

view层
监听P层的数据更新通知, 刷新页面展示.(MVC里由C层负责)
在点击事件触发时, 调用P层的对应方法, 并对方法执行结果进行展示.(MVC里由C层负责)
界面元素布局和动画
反馈用户操作

Presenter层职责
实现view的事件处理逻辑,暴露相应的接口给view的事件调用
调用model的接口获取数据,然后加工数据,封装成view可以直接用来显示的数据和状态
处理界面之间的跳转(这个根据实际情况来确定放在P还是C)

因为MVP中的PV关系理论上是多对多的, 所以P层通常都是由MVP的上层直接分配而不是在C层默认创建, 这样在逻辑变动布局不变的情况下, 上层只需要分配一个新的P层就行了, 同理, 如果逻辑不变布局变了, 上层就替换V层即可.

更标准的写法是针对每个M都有对应V,C,P, V负责布局 ,C负责和上层交互(某个业务场景的具体需求, 比如HUD), P负责业务逻辑(各种格式化, 各种命令),

MVVM各层职责

MVVM各层的职责和MVP的类似,VM对应P层,只是在MVVM的View层多了数据绑定的操作


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

你可能感兴趣的:(MVC, MVP, MVVM记要)