美文网首页
Android_MVP学习

Android_MVP学习

作者: 柠檬味的香橙 | 来源:发表于2018-07-02 20:23 被阅读0次

MVP是模型(Model)、视图(View)、主持人(Presenter)的缩写,分别代表项目中3个不同的模块。

 模型(Model):负责处理数据的加载或者存储,比如从网络或本地数据库获取数据等;

 视图(View):负责界面数据的展示,与用户进行交互,主要是指Fragment ,Activity;

 主持人(Presenter):相当于协调者,是模型与视图之间的桥梁,将模型与视图分离开来;


        View层与Model层并不直接交互,而是使用Presenter作为View与Model之间的桥梁。其中Presenter中同时持有Viwe层以及Model层的Interface的引用,而View层持有Presenter层Interface的引用。当View层某个界面需要展示某些数据的时候,首先会调用Presenter层的某个接口,然后Presenter层会调用Model层请求数据,当Model层数据加载成功之后会调用Presenter层的回调方法通知Presenter层数据加载完毕,最后Presenter层再调用View层的接口将加载后的数据展示给用户。这就是MVP模式的整个核心过程。

这样分层的好处就是大大减少了Model与View层之间的耦合度。一方面可以使得View层和Model层单独开发与测试,互不依赖。另一方面Model层可以封装复用,可以极大的减少代码量。 

-    View发生改变,不影响model

-    model发生改变,不影响View

-    presenter发生改变,只需要改persenter 


下面是用MVP模拟登陆的一个简单Demo:

首先是V层接口,里面写了获取账号密码,登陆成功和失败四个方法,它需要到Activity或者Fragment中去实现。   然后到我们的M层接口,接口回调提高了代码的复用性,CallBacks里是我们的成功失败方法:。  写完Model的接口之后,要去Model类里实现我们的接口,进行一个简单的账号密码匹配,如果匹配成功返回我们CallBacks里边的成功方法,然后传入参数。 然后重要的P层,P层需要持有M和V层,然后让它们进行关联,V层的onGetName,onGetPassword方法把账号密码传给M层让之进行匹配。利用callbacks把参数传给我们的V层。 最后到我们的Activity中,继承View接口,实现View的方法。我们还需要调用P层的方法才可以 。 这是View层的实现类。重写了V层的方法。

这样一个简单的Demo就实现了。

相关文章

  • Android_MVP学习

    MVP是模型(Model)、视图(View)、主持人(Presenter)的缩写,分别代表项目中3个不同的模块。 ...

  • Android_MVP小封装

    MVP是个好东西,可是最近项目一直用的是mvc模式,先马克下之前鼓捣过的mvp框架,过年回家再用它重构下代码。 先...

  • 学习学习学习

    第三天了,连续三天,早上睁眼开始,看视频,做课件,连续作业,直到晚上十二点才睡觉。吃饭不规律,想起来就吃,感觉不饿...

  • 学习学习学习

    23岁的我,才真正明白,什么是学习,什么是努力,努力和不努力真的不同,就好比同样是一篇稿子,我用一周背下来,有的人...

  • 学习学习学习!

    妈妈总是让我学习,我只能用装当办法。 方法一: 方法二: 方法三: 方法四: ...

  • 学习学习学习

    001.今天看财富自由之路看了第二遍,而且看了一半,算是完成任务很开心。中间有想放弃的念头,坚持看完。眼睛痛,一直...

  • 学习学习学习

    马自达为什么坚持高压缩比自吸

  • 学习!学习!学习!

    学习的痛苦是暂时的 没有学到的痛苦是永恒的 因为学习而特别充实的一天 很踏实 ~~~~ 2015.11.28.阴天...

  • 学习!学习!学习!

    无数次想要去逃离,可这封闭的世界根本出不去。你没有什么可以抛弃、只能咬着牙带着面具微笑的活下去。 没有那个人、他也...

  • 学习学习学习!

    昨天和今天两个上午,都在学习新媒体运营,学习的过程中心里只有一个想法:这也太套路,太功利了吧。可真应了那句话...

网友评论

      本文标题:Android_MVP学习

      本文链接:https://www.haomeiwen.com/subject/zpxruftx.html