MVP设计模式在安卓编程中的应用

​大家好,这一期呢,我们来谈一下MVP设计模式在安卓编程中的应用。


MVP设计模式在安卓编程中的应用



Mvp就是model view presenter。

它来源于经典的mvc设计模式。Mvc设计模式可以说是最被广泛使用的设计模式之一了。

先说一下为什么要使用mvp?

我们都知道在安卓编程中activity是既有ui又有数据访问的一个实体机制。随着程序规模的不断增加,我们需要保持程序的可扩展性和可维护性,因此我们需要对程序的整体架构进行分层。

举个实际的例子。

你说我们在activity中对数据的获取方式是通过访问数据库获取的。也许过了一年的时候,我们想用webservice来获取数据了。如果没有数据层的分层,那意味着我们要把原来的代码都要重写一遍。

如果你有一层专门获取数据的,那只需要重写这一层就可以了。

Mvp的作用就是使得视图跟数据访问分开。

就意味着我们要把大部分的数据逻辑和控制操作放到activity之外,我们把我们的程序分成至少三层。分成三层的另一个好处就是我们可以分别的进行测试。

那么如何来应用mvp呢?

首先说一下, 就是view和presenter这两层,有时候要画一个很清晰的界限非常难。比如你对一个进度条的更新,对action bar的更新应该放在哪里?怎么来做决定?这些都取决于你实际的操作,没有一个非常严格的标准。

数据层交互层model, interactor。

这一层主要是用于像服务器端或者数据源端获取数据。假设我们使用用户名和密码来登录服务器获取登录信息。

如果信息登录失败就要用失败的接口,如果成功则调用成功的接口。


MVP设计模式在安卓编程中的应用



视图层view。

视图层肯定是在一个activity里面,它可以是一个单独的fragment也可以几个fragment, 当然可以直接使用activity。



定义的方法就是有一个视图的接口。

定义好我们可能会用到的视图逻辑。比如像这里可以显示进度,可以隐藏进度,可以显示用户名错,可以显示密码错,可以进入到主页内容等等。


MVP设计模式在安卓编程中的应用



然后在我们的activity或者fragment里面实现这个接口。


MVP设计模式在安卓编程中的应用



接下来就是展示层presenter。

展示层是连接view和数据交互层的桥梁。是activity这一层调用的唯一接口。会包含view接口对象和数据交互接口对象。

比如说在这里,我们的登陆接口是通过展示层来调用的。

展示层作为activity的一个成员属性, Activity可以调用它的方法。


MVP设计模式在安卓编程中的应用



使用mvp时候的注意事项。

因为presenter是独立于视图的,而视图就是activity本身。当activity被关闭以后,presenter仍然试图访问这个activity的话,就会导致程序崩溃。另一个问题就是可能会造成内存泄漏。因为presenter操作是activity发起的,如果activity在关掉的时候没有关闭presenter,内存泄漏就会发生。

保持联络,请关注本号。

下面列一下上例中实现的kotlin代码,以飨读者:




MVP设计模式在安卓编程中的应用




MVP设计模式在安卓编程中的应用




MVP设计模式在安卓编程中的应用



MVP设计模式在安卓编程中的应用



分享到:


相關文章: