MVC
单项数据流
- View上用户行为导致Model更新
用户的行为,有些会导致model的更新,View会通过Target-Action或者代理,让View Controller去更新Model,View Controller一般直接持有View和Model。
- Model更新,导致View上更新
Model一般是跟View Controller解耦,Model更新完后,会利用通知、回调、代理或者KVO的方式通知View Controller,然后让View Controller去更新View的显示
- View Controller
有些不需要Model的View State需要View Controller中存储,View Controller协调交互逻辑和表现逻辑,还有管理导航跳转
MVVC
单项数据绑定
- MVVC与MVC不同的地方
MVVC在View Controller与Model之间多了层View Model。View上用户行为导致Model更新,View Controller会让自己持有的View Model去更新Model。
- Model更新,导致View上更新
View Model会监听Model的更新,Model依然跟其他角色解耦。只能通过代理、通知、回调或者KVO的方式去通知自己状态的变化。View Model知道Model变化后会
- View与View-Model
为了保证View与View-Model的同步,需要让一个对象中的属性绑定另外一个对象中的属性,达到同步的目的。在Controller中会让view-model中暴露的属性绑定view中对应场景的属性。
- 属性关联
用响应式编程框架可以达到这种目的,另外只基于Foundation的键值观察(KVO)的绑定也可以实现属性关联
网络层应该放到哪层
MVC中,如果controller处理网络,会使不同view controller之间进行数据共享变的困难,所以如果由model拥有model可以解决这个问题,另外还能将网络获取的数据进行离线缓存
参考书籍
《App 框架》-- obj.com
网友评论