谷歌官方MVP Contract分析

作者: 想入飞飞___ | 来源:发表于2016-08-21 10:22 被阅读2499次

目前Android开发比较流行的是MVP开发架构,与MVC不同的是把Activity、Fragment等作为View层,与Android平台相关的东西基本上都被隔离在View层,Presenter负责处理业务逻辑和调度View和Model,Presenter的理想境界都是纯Java的东西,数据加载、网络请求看作是Model,还是原来的Model。

关于MVP网上的写法很多,一直以为大家也比较关注,由于使用了MVP架构,接口会明显变多,会有一种本来很简单几行的代码的事,反而写很多,那我们来看看GOOGLE是怎么做的吧。

项目地址:https://github.com/googlesamples/android-architecture

首先我们看到项目是以功能模块划分的,估计大多数同学喜欢文件类型来划分吧,我还是比较喜欢用功能模块来划分,个人喜好问题。


眼神好的同学可能已经看到了最下边两个接口了BasePresenter和BaseView
那就从他们入手好了:
BaseView: 所有View的父接口,

public interface BaseView<T>
{    
    void setPresenter(T presenter);
}

BaseView中有一个泛型,其实就是Presenter了,是用于Presenter向View传值,得到Presenter的引用,这样在View中就可以调用Presenter的方法来实现一些功能了,比如向Presenter请求数据,。

BasePresenter: BasePresnter是所有Presenter的父接口,只有一个start()方法,用于在onResume()中来看代码:

public interface BasePresenter 
{    
    void start();
}

在谷歌官方的MVP中还有一个比较有意思的就是Contract了,这个类似合同类的接口把P和V的所有方法全部写在一起,看起来代码格外清楚,所有的功能清清楚楚,其实只要看这个Contract差不多所有的功能就已经有所了解了,如图。


BaseView.png

这里就不再过多的介绍细节问题,关键还是要看代码,谷歌的代码水平确实高,自己看了也收获颇丰。

总结:谷歌的mvp与其他的不同的是多了一个Contract,当接口变多了,Contract优势明显出来了,一目了然,相比写一个个接口把他们都写在一起这种做法还是不错的。

相关文章

  • 谷歌官方MVP Contract分析

    目前Android开发比较流行的是MVP开发架构,与MVC不同的是把Activity、Fragment等作为Vie...

  • 谷歌官方MVP Contract浅解

    先上官方源代码: 可以看到官方MVP代码的包结构,是根据业务来划分,每个包里边都有一个MVP结构。Activity...

  • 谷歌官方MVP架构分析

    谷歌官方MVP基础架构总结 项目架构图: 在官方的MVP实现中,类的分类是以功能划分到一个包中。 具体的实现流程,...

  • 告别臃肿的Contract接口,kotlin实现极简MVP

    以前,我们参考google的官方示例实现MVP,需要定义一个Contract契约类,View和Presenter之...

  • 002.MVP

    Android Architecture Blueprints 学习之 TODO-MVP(一) - 推酷 谷歌官方...

  • Android第三方框架

    2017 - 09 -18 MVP架构 谷歌官方的一些示例框架 AndroidStudio MVPPlugin 帮...

  • Day 2

    登录模块 1、mvp→model包新建:User.java 2、mvp→contract新建:LoginContr...

  • Google MVP Demo深入学习和总结

    Google在2016年推出了官方的Android MVP架构Demo,本文主要分析一下官方的MVP Demo,并...

  • Android MVP - Contract

    说起Android比较流行的架构模型,MVC、MVP、MVVM这几种是最常见的,也是当前主流的架构模型,本篇通过对...

  • Google官方MVP+Rxjava项目详解

    全面分析Google官方架构Google官方MVP+Rxjava项目欢迎follow我的github:https:...

网友评论

  • 0b828f0ef444:大佬眼神太犀利
  • nbpzjy:好!!!
  • 李简书:这个地方我有些不明白的是为什么这个协议类中不写进去model的接口,而且P的接口写进去出了符合面向接口编程外,不太理解为什么要抽取出一个P接口,我觉得P中没有什么能够重用什么的

本文标题:谷歌官方MVP Contract分析

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