浅谈-Android之MVP模式,用实际项目理解MVP

最近跳槽了一家新公司,也打算开始写一些博客记录一下自己Android方面的知识点,还有工作中的点点滴滴,以便于自己知识积累,再跳槽的时候可以更好地系统的复习这些知识点

今天带来的就是现在项目中常见的MVP模式

MVP

这个模式很早前就开始推行在各大项目中,虽然现在很多大项目上了Mvvm+DataBinding这种模式,但是mvp还是很值得使用和借鉴的

至于什么是mvp?网上已经一大堆解释这种框架的文章和贴图了,我也不打算在这解释了,有需要的可以移步 鸿洋大佬这篇文章   https://blog.csdn.net/lmj623565791/article/details/46596109 可以看下具体的说明,我这篇博客主要通过实际项目中的使用来介绍一下mvp三层之间的调用关系

实际项目中的使用

先看下实际项目中的效果图,这是个订单详情页面,在这种有复杂逻辑的页面,mvp模式的优势就会体现出来了,注意一点的是 mvp固然好用,但它需要多些很多类,会带来很多不必要的工作,所以简单页面或者说没有复杂交互逻辑的页面还是推荐直接mvc直接完成就好

代码的结构

你可能很好奇为什么 这个页面哪来的Fragment的,其实整个项目的结构都是以Fragment作为载体,Activity其实就是个空的Fragment的载体,至于为什么这么做?我得出的答案是在Fragment中操作更加节省内存????这个问题还有待证实,不过不是我们的重点,我们就把Fragment当做View来看待

现在我们来看下TripDetailContract这个接口类写了哪些接口

确实 我们知道mvp的一个缺点就是需要写接口类 这里把两个接口类并合到一个类中而已

loadTripDetailsCashInfo()这个方法在上面接口Presenter中定义了 
然后 TripDetailsPresenter implements TripDetailsContract.Presenter 实现了这个方法,在这个方法中去进行调用网络请求的方法,就是mvp中的M操作,这个mTripDataSource对象就是我们的M,里面封装的这个方法就是去网络请求,最后回调到onSucc和onFail 两个方法,表示成功和失败,最后调用 mView.showShareCashBackView(tripDetailCashBackInfo);再把数据回传给View层做显示操作

至此整个MVP的流程就走完了 需要理清的关系就是  P层需要持有M和View的 两个对象引用,因为在P层中会去调用M层去做数据请求,会调用VIew层做数据回显,view层需要持有p层的引用,因为一些的发起点都是从P层开始的,假如view层中的一个点击事件中需要执行方法,这个时候就需要把操作写在P层中,所以他们之间是相互持有的关系 下图就是view层中拿P层的对象调用p层的方法

mvp只要理顺其中的三层之间的引用关系其实还是很好理解的,接口多只是需要面向接口开发,这样方法更加简单明了,很多人觉得接口费事,其实在后面的项目维护过程中就会发现很清晰明了

猜你喜欢

转载自blog.csdn.net/lixiaolu1994/article/details/83504844