Android学习笔记整理之常用三种框架:2、MVP模式

目录

MVP框架模型

MVC模型的明显缺陷

MVP模型简介

MVP模型优缺点

使用MVP的建议


MVP框架模型

本节将带大家总结 MVC 模型存在的问题,通过对比的方式学习MVP框架模型,

并使用 MVP 模型实现对该需求的进一步优化,最后总结MVP的优点,以及MVP中还可以进行优化的部分。

MVC模型的明显缺陷

前面我们讲到 mvc 模型,它有一些明显的缺陷

而在mvp模型当中,这些问题得到很好的解决

 

MVP模型简介

Model主要负责数据方面的工作,View主要负责视图方面的工作,它主要指android当中的Activity或Fragment,

而Presenter则是连接Model和View的一个纽带

我们会发现图中 Model 和 View 已经不再发生直接的通信了,而是通过中间的Presenter层去实现,

并且在 mvp 当中 Activity 或 Fragment 充当我们的 view 层,view 层的功能也已经得到简化,主要负责视图方面的工作。

下面我们来看下 mvp 与 mvc 的差别

要使用 mvp 模型来实现需求,首先我们需要在 View 层来创建一个 activity,

然后在 activity 实现视图方面的功能:获取用户输入、展示成功界面、展示失败界面。

为了方便解耦,我们还可以创建一个接口(IMVPView),然后将对应的视图功能放到接口当中去声明,

最后让activity去实现我们的接口,这样activity也就拥有了对应的视图功能。

接着,我们需要创建一个 Model(MVPModel)来实现我们的数据功能(查询账号数据),需要提供查询账号数据,

而Model和View之间是不进行任何通信的,所以我们还需要一个中间层Presenter(MVPPresenter),它可以进行业务逻辑处理,并且作为中间层它还需要负责 Model 和 View 之间的通信。那么怎么实现呢?

我们可以让 Presenter 持有 View 以及 Model 的引用,这样就可以实现 View 与 Model 在 Presenter 层的一个间接的通信。

下面我们来总结一下,要使用 mvp 模型实现需求,我们需要实现如下主要步骤

下面我们来看看具体的代码实现

 

 

MVP模型优缺点

使用MVP的建议

1、因为它的接口数量比较多,所以我们需要进行接口的规范化。比如我们可以封装父类接口以减少接口的使用量。

2、使用第三方插件来自动生成 MVP 的代码,这样可以减少工作量

3、对于一些简单的界面,可以选择不使用框架。或者选择使用 mvc 框架

4、根据项目的复杂程度,我们部分模块可以选择不使用接口。

就像我们上面演示的代码,只对activity进行了接口的使用,Model层和Presenter层都没有使用接口。

你可能感兴趣的:(安卓开发)