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