笔沫

有梦为马,随处可栖

  • 主页
  • 技术
  • 随想
  • 音乐
所有文章 其他

笔沫

有梦为马,随处可栖

  • 主页
  • 技术
  • 随想
  • 音乐

MVP模式学习及使用

2017-04-11

Google官方推出MVP模式有一段时间,MVP模式在android项目中使用也越来越广泛。作为一个Android开发人员,学会使用MVP模式,那也相当的重要。

一、什么是MVP

MVP从MVC架构模式演化而来, MVC分别代表模型、视图和控制器,在Android中,定义Class类作为模型,Layout XML表示视图,而Activity用作控制器,这样一来,在Activity中充斥了大量代码,无论是从扩展性和重用性都无法达到理想的效果。所以个人认为,MVC分层在Android App开发中没有解决问题。而MVP解决了这个问题。

MVP即为Model、View和Presenter。Model表示模型,实现数据存储与业务逻辑;View表示视图,提供用户交互的接口;Presenter表示主导器,相当于MVC中的Controller但比Controller更灵活。MVP的关系如图所示。

从上图可以看出:

A) View将功能委托给Presenter完成,Presenter调用Model完成业务功能与数据存储,并再次通过View更新UI;

B) View和Model没有直接关联,无法相互调用;

C) Presenter和View可以相互调用;

D) Presenter调用Model完成业务功能。

MVP的优点:

A) 各个层次之间的职责更加单一清晰;

B) 很大程度上降低了代码的耦合度;

C) 复用性大大提高;

D) 面向接口编程,定义与实现分离,方便测试与维护;

E) 代码更简洁。

MVP的缺点:

A) 类变得更多了;

B) 组件与组件之间的关系很复杂。

二、MVP的使用

Google官方在推出MVP模式时,也给出了一个使用MVP模式的DEMO(TODO-MVP),通过此Demo,细细阅读,细细评味。相信,很快你就会掌握MVP模式的使用方法。

DEMO项目截图:

使用注意:虽然MVP模式非常的给力,但我们也不能乱用。需要结合我们项目实际情况来使用,对于功能比较简单的界面,其实MVC模式相对来说还是比较适合,毕竟功能简单,代码量也不会很多。对于功能比较复杂的界面,建议使用MVP模式来优化流程。

三、相关链接

Android Architecture Blueprints 学习之 TODO-MVP(一);

Android Architecture Blueprints 学习之 TODO-MVP(二);

Android Architecture Blueprints 学习之 TODO-MVP(三);

赏

感谢认可,么么哒

支付宝
微信
  • 技术
  • Android
  • Android基础
  • MVP

扫一扫,分享到微信

微信分享二维码
Android常用开源框架
Android技术知识要点
© 2019 笔沫
Hexo Theme Yilia by Litten
  • 所有文章
  • 其他

tag:

  • 技术
  • Android
  • Activity的启动模式
  • Android注解
  • Java反射机制
  • Java动态代理
  • Android基础
  • MVP
  • NDK
  • JNI C/C++
  • 开源框架
  • AS Gradle优化
  • 博客搭建
  • 设计模式
  • Fragment
  • Rxjava
  • Rxandroid
  • 响应式编程
  • 随想
  • 你本是一个肉体,是什么驱使你前行
  • 原创
  • 笔沫拾光
  • Java
  • Java基础
  • 王阳明心学
  • 中国历史
  • 人生的意义
  • 演讲
  • 执着的人是幸福的
  • 郭川
  • Android框架源码解析
  • 加解密算法
  • Binder通信机制
  • 开源框架源码解析
  • LeakCanary框架源码分析
  • Java集合类
  • 转载
  • Http文件断点续传
  • Logger框架源码解析
  • Android应用程序入口源码解析
  • DecorView绘制流程
  • Android消息机制源码解析
  • Activity启动流程
  • Butterknife框架源码解析
  • 我之存在,因为有你
  • 霍华德*舒尔茨
  • Android相机
  • Camera
  • 悬浮窗
  • WindowManager

    缺失模块。
    1、请确保node版本大于6.2
    2、在博客根目录(注意不是yilia根目录)执行以下命令:
    npm i hexo-generator-json-content --save

    3、在根目录_config.yml里添加配置:

      jsonContent:
        meta: false
        pages: false
        posts:
          title: true
          date: true
          path: true
          text: false
          raw: false
          content: false
          slug: false
          updated: false
          comments: false
          link: false
          permalink: false
          excerpt: false
          categories: false
          tags: true
    

  • 风光摄影
  • 星空摄影
  • 人像摄影
  • 学习站点