M-V-VM在iOS开发中的应用

        项目开发中,经常遇到一个界面很复杂,各种控件各种View,相互之间有复杂的互动逻辑,各组件的数据有时还需要专门的服务器接口支持

       MVC模式会把这些逻辑都放到C里面实现,使得某个ViewController非常庞大复杂。不管是改动功能还是debug,都很费时。

       M-V-VM模式引入MVC中,可以改善这种情况。结构如下:

技术分享

解释

       将一个界面中的各种元素分成几个相对独立的组件,每个组件创建一个对应的ViewModelViewController创建并管理这些ViewModel之间的相互通讯互动

       ViewModel管理View的刷新和用户操作事件。如果用户的响应需要其他组件进行互动,则通过delegate向上传递给ViewController。由ViewController进行ViewModel之间的通讯路由

       View提供一个用户刷新显示的API,内部元素的具体刷新实现外部不可见。

除了刷新显示,View还提供用户操作的响应,通过delegate通知ViewModel处理。

       DataModelViewModel管理。它具有获取View的数据、保存数据到某个数据结构的功能。一般会创建一个公共属性保存获取到的新数据。ViewModel对这个属性建立KVO监控。

       我们一般会使用异步方式从网络下载新数据,当新数据下载成功,经过解析后存储到公共属性里。这时,KVO方法被激活执行,ViewModel读取属性的值传递给View,让它刷新显示

       DataModel提供一个类似reloadData的更新数据方法,由ViewModel调用。ViewModel只要调用了这个方法,一切就开始自动运行

       DataModel仅对ViewModel可见。这样,这三者形成了一个相对独立的生态圈,外部仅能看见ViewModel。由ViewModel提供对外的API,比如刷新数据,提交跨ViewModel通讯申请等

Demo项目在这里下载地址

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。