您的位置:首页 > 运维架构 > 网站架构

MVP架构Android代码经验实践

2018-01-16 11:09 513 查看
先来一位大神的博客:鸿洋博客,里面讲MVP架构相关知识讲的很详细,不懂MVP架构的可以去看看,安卓这块CSDN中我很欣赏的博主之一,我也是参考着他的博客,然后通过实践做项目才有的目前的经验。

话不多说,先看看我是怎么把代码耦合性很高的类拆成MVP架构的,先上简单的例子来讲解:





这是一个简单的标签收藏的功能,不用架构来写代码大家应该是这样写如下:

先初始化initView():





然后setListener():





是吧,没用架构的时候,大家大多应该就这样实现的吧,这样实现,在功能方面没什么问题,但是我们说过了,代码要追求的是高内聚低耦合的效果,这样写显然耦合性是很高的,所以现在我们要把这段代码使用MVP架构的

模式来修改它,以达到解耦合的目的。

(1)View

下面我们先从MVP的V(View)开始进行。

看过鸿洋博客的,都知道,我们在写View接口的时候,注意三件事情:

1、你在界面层很获取到什么?显然是标签名:getEditText();X坐标:getX();Y坐标:getY();比例尺:getScale();

2、你在界面层操作之后结果,对应的反馈?显示收藏成功信息:showCollectionSuccessMsg();显示收藏失败:showCollectionFailedMsg();

3、该操作过程中对应的友好交互:收藏完毕后,设置按钮不可点击:setFavBtnEnable()

这样就将View层的接口抽出来了,代码如下:









然后再让我们的Activity或者Fragment去实现这个接口,然后实现就可以了,直接上代码。












是不是感觉类瞬间清晰分明了很多,哈哈,这就是MVP架构的优点了,还有很多优点后面再说。

(2) Model

再来讲下MVP架构的,M(Model)层:

       这块就一个业务类方法,暂时没有用到实体类,当然有用到实体类时候,我会提醒大家,话不多说:



其中监听接口OnCollectionListener是一个回调接口,收藏成功后通知主界面显示收藏成功信息的。

(3)Presenter

    然后就是P层了(Presenter)

P层就是Model层和View层之间的桥梁的作用,是两个之间的纽带,这也是MVP能够解耦的关键的地方。

先上代码:

 







P类里面就一个方法collectionMark(),

然后成员变量就是界面层View接口类,Model层的业务类,然后在构造方法里面实现业务类就能调用业务类里面的方法了,然后界面层的获取,也能通过view接口来实现。这样就将model层和View层完全分离开,只通过桥梁P层来作为联系纽带,从而达到解耦合的目的。好了,相信大家已经初步了解并且可以使用MVP架构了,大家可以对比下架构前和架构后的代码,相信大家可以看出来MVP架构后的代码不光耦合性低,条例也清晰了很多。今天就先说这么多吧,下一篇文章,我将会用一个更复杂的例子来说说,如何使用MVP架构Android代码。

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: