MVC&MVVC

2020-04-20  本文已影响0人  绍清_shao

MVC

单项数据流

用户的行为,有些会导致model的更新,View会通过Target-Action或者代理,让View Controller去更新Model,View Controller一般直接持有View和Model。

Model一般是跟View Controller解耦,Model更新完后,会利用通知、回调、代理或者KVO的方式通知View Controller,然后让View Controller去更新View的显示

有些不需要Model的View State需要View Controller中存储,View Controller协调交互逻辑和表现逻辑,还有管理导航跳转

MVVC

单项数据绑定

MVVC在View Controller与Model之间多了层View Model。View上用户行为导致Model更新,View Controller会让自己持有的View Model去更新Model。

View Model会监听Model的更新,Model依然跟其他角色解耦。只能通过代理、通知、回调或者KVO的方式去通知自己状态的变化。View Model知道Model变化后会

为了保证View与View-Model的同步,需要让一个对象中的属性绑定另外一个对象中的属性,达到同步的目的。在Controller中会让view-model中暴露的属性绑定view中对应场景的属性。

用响应式编程框架可以达到这种目的,另外只基于Foundation的键值观察(KVO)的绑定也可以实现属性关联

网络层应该放到哪层

MVC中,如果controller处理网络,会使不同view controller之间进行数据共享变的困难,所以如果由model拥有model可以解决这个问题,另外还能将网络获取的数据进行离线缓存

参考书籍

《App 框架》-- obj.com

上一篇 下一篇

猜你喜欢

热点阅读