话不多说,先看看我是怎么把代码耦合性很高的类拆成MVP架构的,先上简单的例子来讲解:
这是一个简单的标签收藏的功能,不用架构来写代码大家应该是这样写如下:
先初始化initView():
模式来修改它,以达到解耦合的目的。
(1)View
下面我们先从MVP的V(View)开始进行。
看过鸿洋博客的,都知道,我们在写View接口的时候,注意三件事情:
1、你在界面层很获取到什么?显然是标签名:getEditText();X坐标:getX();Y坐标:getY();比例尺:getScale();
2、你在界面层操作之后结果,对应的反馈?显示收藏成功信息:showCollectionSuccessMsg();显示收藏失败:showCollectionFailedMsg();
3、该操作过程中对应的友好交互:收藏完毕后,设置按钮不可点击:setFavBtnEnable()
这样就将View层的接口抽出来了,代码如下:
然后再让我们的Activity或者Fragment去实现这个接口,然后实现就可以了,直接上代码。
(2) Model
再来讲下MVP架构的,M(Model)层:
这块就一个业务类方法,暂时没有用到实体类,当然有用到实体类时候,我会提醒大家,话不多说:
这块就一个业务类方法,暂时没有用到实体类,当然有用到实体类时候,我会提醒大家,话不多说:
(3)Presenter
然后就是P层了(Presenter)
然后就是P层了(Presenter)
P层就是Model层和View层之间的桥梁的作用,是两个之间的纽带,这也是MVP能够解耦的关键的地方。
先上代码:
P类里面就一个方法collectionMark(),
然后成员变量就是界面层View接口类,Model层的业务类,然后在构造方法里面实现业务类就能调用业务类里面的方法了,然后界面层的获取,也能通过view接口来实现。这样就将model层和View层完全分离开,只通过桥梁P层来作为联系纽带,从而达到解耦合的目的。好了,相信大家已经初步了解并且可以使用MVP架构了,大家可以对比下架构前和架构后的代码,相信大家可以看出来MVP架构后的代码不光耦合性低,条例也清晰了很多。今天就先说这么多吧,下一篇文章,我将会用一个更复杂的例子来说说,如何使用MVP架构Android代码。