浅谈iOS中的MVC MVP MVVM

Posted 小楼一夜听春雨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了浅谈iOS中的MVC MVP MVVM相关的知识,希望对你有一定的参考价值。

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的主要内容,如果未能解决你的问题,请参考以下文章

浅谈前端MVC/MVVM模式特点及区别

浅谈Android MVP 设计模式

动画:浅谈后台 MVC 模型与 MVVM 双向绑定模型

iOS架构补完计划--浅谈架构模式(MVC/MVVM)

浅谈Android中的MVP

切图崽的自我修养-[MVVM] Js MV*模式浅谈