最先的时候,只知道MVC(模型+视图+控制器). 把数据的管理与显示分开, 经过控制器实现管理与显示之间的互动, 方便开发与复用.架构
美好的事情老是很快发生, 在6月份接手的项目中,看到这样的代码, 把视图显示和数据处理的代码放在ViewController里面, 这连MVC 的标准都不是.优化
以前我常常这样用,把数据单独一层来处理, 而后在数据层里面实现数据的持久化(本地化), 这层就是一般锁说的 S .所用架构就是 MVC S 对象
MVC S 经过把数据存储抽离, 是对MVC作的简化.开发
无论用到MVC 仍是 MVC S,都会产生的问题: 视图控制器由于初期需求的频繁迭代,慢慢的积累下愈来愈多的业务逻辑代码,相对应的数据转换代码页愈来愈多.从而致使ViewController愈来愈大,后期维护愈来愈难. im
业界普遍使用MVVM: 数据
首先看一个典型的IOS是如何建立的:从这里理解MVVM 项目
这是一个典型的MVC设置, Model呈现数据, View呈现用户界面,ViewController完成他们二者之间的交互,一切看起来是那样的完美.img
若是咱们稍微深一点考虑, 虽然View 和ViewController都是不一样的组件, 但每次都是配对使用.di
这个图解很好的描述了MVVM, 一个MVC 的加强版. 将视图和控制器链接, 并将表示逻辑从Controller移到一个新的对象中,即View Model. MVVM听起来很高大上,其实就是优化了MVC架构.交互
MVVM 中的ViewModel就是把数据的展现逻辑从VC中拆分出来,数据经ViewModel出来后,可直接用于View显示