码迷,mamicode.com
首页 > 移动开发 > 详细

浅谈iOS中的MVC MVP MVVM

时间:2019-10-16 09:49:51      阅读:112      评论:0      收藏:0      [点我收藏+]

标签:实现   直接   方法   响应   present   lang   很多   mvp   导致   

MVP MVVM都源自MVC.

传统的MVC,业务逻辑放在Model层,UI在View层,Controller只是Model和View的粘合剂。

实际情况,Model层只存放从json解析的数据模型,Controller层(ViewController)有很多UI逻辑,导致Controller里面既包含业务逻辑(请求数据、处理数据)又包含控制UI逻辑,因此Controller巨大无比。

 

所以衍生出MVP和MVVM

MVP:把Controller中的业务逻辑抽出来放到Presenter层,ViewController和View统一作为View层,同时View被动更新,提供一组View更新的协议方法,presenter层负责调用,Presenter层和View层互相引用。

同时presenter层还提供将Model数据转成View需要的数据类型的方法,不过很多时候都是View中直接引用特定的Model对象,方便实现业务,所以这步通常没有,但是如果为了复用View,中间最好还是加一层数据转换逻辑。

 

MVVM跟MVP类似,区别是ViewModel层不会去引用View,一般用响应式编程的框架实现View的更新(如ReactiveCocoa等,不过现实情况也会通过ViewController的逻辑去更新View),共同点是一个presenter或者一个ViewModel可以适配不同的View,presenter或者ViewModel可以单独测试。

浅谈iOS中的MVC MVP MVVM

标签:实现   直接   方法   响应   present   lang   很多   mvp   导致   

原文地址:https://www.cnblogs.com/yibinpan/p/11683373.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!