一:何为MVC ?
Model View Controller,模型 (model)-视图 (view)-控制器 (controller) 的缩写

1) Model层: 用来存储业务的数据,通常来讲就是创建数据的模型(常常是字典转模型),提供一个类或对象方法 供Controller获取数据
2) View层: a)封装快速创建cell的类方法. b)拥有一个模型属性,用来接受Controller传来的模型数据
3) Controller层: a)取出模型 b)创建cell c)设置数据
4)存在问题: MVC结构Model代码很少,Controller代码很多,不太好测试.随着业务增加,将会造成旱的旱死,涝的涝死;
二:何为MVVM ?

1)View | Controller:是一个业务逻辑,发起网络请求和其他代码
2)ViewModel:是一个放置用户输入验证逻辑,视图显示逻辑,发起网络请求和其他代码
3)使用规则: a): view和view controller正式联系在一起,把它们视为一个组件
b): view和view controller都不能直接引用 model,而是引用视图模型
c): view引用view model,view model引用了model,但反过来不行
4)优点: a) 低耦合:View可以独立于Model变化和修改,一个ViewModel可以绑定到不同的View上
b) 可重用性:可以把一些视图逻辑放在一个ViewModel里面,让很多view重用这段视图逻辑
c) 独立开发:开发人员可以专注于业务逻辑和数据的开发ViewModel,设计人员可以专注于页面设计
d) 可测试:通常界面是比较难于测试的,而 MVVM 模式可以针对ViewModel来进行测试
三:结构进化
当项目比较小,你可以按UI层/逻辑层/数据层 式的分层次开发,分层次开发适用于项目小,业务逻辑少的环境;
当项目比较大,业务逻辑比较复杂,就比较适合MVC 式的分模块开发,对开发人员的综合能力较高;
当项目逐渐扩大,业务增加,就会造成控制器代码量特多不易维护和测试,就需要进行封装,给控制器减减肥,MVVM就显得特别需要.
每一模式都有它的生存土壤,不要唾弃按层次开发模式,也不要舍弃MVC,更不要跪舔MVVM,按需开发则是核心;
唐巧关于MVC&MVVM的分享:( http://devtang.com/blog/2015/11/02/mvc-and-mvvm/ )