标签:实现 直接 方法 响应 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可以单独测试。
标签:实现 直接 方法 响应 present lang 很多 mvp 导致
原文地址:https://www.cnblogs.com/yibinpan/p/11683373.html