MVP设计模式简介

什么是MVP设计模式,以及为什么要用MVP

MVP设计模式是相对于MVC设计模式的,要介绍MVP设计模式,我们首先先了解下什么是MVC设计模式,在MVC设计模式中,Activity应该是属于View这一层。而实际上它既承担了View,同时也包含了一些Controller的东西在里面。我们设计程序的一个基本原则就是高内聚,低耦合。传统的MVC设计模式对于开发和维护来说不太友好,耦合性太高。把Activity的View和Controller抽离出来变成了View和Presenter,这就是MVP设计模式。

MVP的核心思想

MVP把Activity中的UI逻辑抽象成VIew接口,把业务逻辑抽象成Presenter接口,Model类还是原来的Model。
这就是MVP的设计模式,现在这样的话Activity的工作就简单了,只用来响应生命周期,其他的工作都丢到Present中去完成。Present是Model和View的桥梁,为了让结构变得简单,View不能直接对Model进行操作,这也是MVP和MVC最大的不同之处。

MVP设计模式的好处

1、分离了视图逻辑和业务逻辑,降低了耦合。
2、Activity只处理生命周期的任务,代码变得更加简洁。
3、视图逻辑和业务逻辑分别抽象到View和Presenter的接口中去,提高了diamante的可阅读性。
4、Presenter被抽象成接口,可以有多种具体的实现,所以方便进行单元测试。
5、把业务逻辑抽象到Presenter中去,避免了后台线程引用着Activity,导致Activity的资源无法被系统回收从而引起OOM。
其中最重要的有两点:

Activity代码变得更加简洁

相信很多人阅读代码的时候,都是从Activity开始的,对着一个1000+行的代码的Activity看了都觉得难受,

使用MVP之后,Activity就能瘦身许多,基本上只有FindViewById(找到布局)、SetListener(事件处理),以及int的代码其他的都是对Presenter的调用,还有对View接口的实现。这种情况下阅读代码就变得容易多了。

避免Activity的内存泄漏

Android APP发生OOM的最大的原因就是出现内存泄漏造成APP的内存不够用,而造成内存泄漏的原因有很多,其中之一就是Activity泄漏(Activity Leak)

Activity是有生命周期的,用户随时可能切换Activity,当APP的内存不够用的时候,系统会回收处于后台的Activity的资源以避免OOM。

采用传统的MVC模式,一大堆异步任务和对UI的操作都放在Activity中里面,比如你可能从网络上下载一张图片,在下载成功的回调里把图片加载到Activity的imageView里面,所以异步任务保留着对Activity的引用,这样一来,即使Activity已经被切换到后台(onDestroy已经执行),这些异步任务仍然保留着对Activity的引用,所以系统就无法回收这个Activity实例了,结果就是Activity leak。

采用MVP模式,只要在当前的Activity的onDestroy里,分离异步任务对Activity的引用,就能避免Activity Leak。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值