介绍
MVP模式(Model-View-Presenter)是MVC模式的一个衍生。主要目的是为了解耦,使项目易于维护。
View
View通常来说就是有Activity、Fragment实现的,View会包含一个或多个Presenter的引用来满足视图的业务逻辑。View和Presenter的交互是双向的,即View层可以调用Presenter的逻辑方法,Presenter也可以控制View的显示。
Presenter
Presenter作为Model和View的桥梁,负责从Model拿到数据进行处理并返回给View。但Presenter和其他两层的沟通是通过接口协议进行的,所以每个Presenter中通常会包涵一个或多个接口协议。
Model
和MVC一样,作为数据仓库只负责对APP数据进行处理。
MVC
Model 是应用程序中用于处理应用程序数据逻辑的部分。
View 是应用程序中处理数据显示的部分。
Controller是应用程序中处理用户交互的部分。
为什么使用MVP
在以往的Android开发中,Activity并不是一个标准的MVC模式中的Controller, 它的加载应用的布局和初始化用户界面,接受并处理来自用户的操作请求,进而作出响应。但是随着界面及其逻辑的复杂度不断提升,Activity类的职责不断增加,以致变得庞大臃肿。当我们将其中复杂的逻辑处理移至另外的一个类(Presneter)中时,Activity其实就是MVP模式中View,它负责UI元素的初始化,建立UI元素与Presenter的关联(Listener之类),同时自己也会处理一些简单的逻辑(复杂的逻辑交由Presenter处理)。
View和Model之间的耦合度降低,使其更关注自身业务逻辑;
便于单元测试;
代码复用率提高;
代码框架更适用于快速迭代开发;
M存储数据,V交互,P处理逻辑。V和P之间通过接口通信。
MVCMVP
View不直接与Model交互 ,而是通过与Presenter交互来与Model间接交互View可以与Model直接交互
Presenter与View的交互是通过接口来进行的,更有利于添加单元测试Controller是基于行为的,并且可以被多个View共享
通常View与Presenter是一对一的,但复杂的View可能绑定多个Presenter来处理逻辑可以负责决定显示哪个View
MVP层Presenter层和MVC的Controller一样,负责核心逻辑,但不一样的是Presenter通过接口协议进行数据传递,并阻断了View和Model的直接联系,从而使View和Model更加专注于自身业务逻辑。
网友评论