安卓作业--第四篇
2016-02-25 15:50
239 查看
MVP模式之TheMVP学习笔记(注:标红的文字解释是重点)
原文博客链接:http://blog.kymjs.com/code/2015/11/09/01/?utm_source=tuicool&utm_medium=referral
GitHub链接:https://github.com/kymjs/TheMVP
MVP(Model-View-Presenter)是一个将后台任务和activities/views/fragments分离的方法,让他们独立于绝大多数跟生命周期相关的事件。这样应用会变得更加简单,应用的稳定性提升,代码也变得更短,可维护性增加。
View是指显示数据并且和用户交互的层。在安卓中,他们可以使一个Activity,一个Fragment,一个android.view.View或者一个Dialog
Model是数据源层。比如数据库接口或者远程服务器的API(Application Programming Interface)
Presenter是从Model中获取数据并提供给View层,Presenter还负责处理后台任务。
在Android开发中,Activity并不是一个标准的MVC模式中的Controller(C层起到桥梁的作用,来控制V层和M层通信以此来达到分离视图显示和业务逻辑层),它的首要职责是加载应用的布局和初始化用户界面,并接受并处理来自用户的操作请求,进而作出响应。但是,随着界面及其逻辑的复杂度不断提升,Activity类的职责不断增加,以致很容易变得庞大而臃肿。
越小的类,bug越不容易出现,越容易调试,更容易测试,我相信这一点大家是都赞同的。在MVP模式下,View和Model是完全分离没有任何直接关联的(比如你在View层中完全不需要导Model的包,也不应该去关联它们)。
使用MVP模式能够更方便的帮助Activity(或Fragment)职责分离,减小类体积,使项目结构更加清晰。
与传统androidMVP不同(原因上文已经说了),TheMVP使用Activity作为Presenter层来处理代码逻辑,通过让Activity包含一个ViewDelegate对象来间接操作View层对外提供的方法,从而做到完全解耦视图层。如下图:
向一位合格的leader奋斗
原文博客链接:http://blog.kymjs.com/code/2015/11/09/01/?utm_source=tuicool&utm_medium=referral
GitHub链接:https://github.com/kymjs/TheMVP
什么是MVP
MVP(Model-View-Presenter)是一个将后台任务和activities/views/fragments分离的方法,让他们独立于绝大多数跟生命周期相关的事件。这样应用会变得更加简单,应用的稳定性提升,代码也变得更短,可维护性增加。View是指显示数据并且和用户交互的层。在安卓中,他们可以使一个Activity,一个Fragment,一个android.view.View或者一个Dialog
Model是数据源层。比如数据库接口或者远程服务器的API(Application Programming Interface)
Presenter是从Model中获取数据并提供给View层,Presenter还负责处理后台任务。
为什么需要MVP
在Android开发中,Activity并不是一个标准的MVC模式中的Controller(C层起到桥梁的作用,来控制V层和M层通信以此来达到分离视图显示和业务逻辑层),它的首要职责是加载应用的布局和初始化用户界面,并接受并处理来自用户的操作请求,进而作出响应。但是,随着界面及其逻辑的复杂度不断提升,Activity类的职责不断增加,以致很容易变得庞大而臃肿。
越小的类,bug越不容易出现,越容易调试,更容易测试,我相信这一点大家是都赞同的。在MVP模式下,View和Model是完全分离没有任何直接关联的(比如你在View层中完全不需要导Model的包,也不应该去关联它们)。
使用MVP模式能够更方便的帮助Activity(或Fragment)职责分离,减小类体积,使项目结构更加清晰。
TheMVP原理介绍
与传统androidMVP不同(原因上文已经说了),TheMVP使用Activity作为Presenter层来处理代码逻辑,通过让Activity包含一个ViewDelegate对象来间接操作View层对外提供的方法,从而做到完全解耦视图层。如下图: 相关文章推荐
- CodeForces 589F 二分答案
- Linux上安装Redis教程
- yum nginx 安装时错误 Errno 14 Couldn't resolve host 解决办法
- ++++++jquery相关基础知识++++++
- 一步一步教你用 java 生成二维码
- 图片缓存
- CryptoJS简单使用
- 五大常用算法之二:动态规划算法
- viewpager中多fragment及时加载
- 解压缩命令
- 图文详解YUV420数据格式
- mfc连接access2010数据库失败问题
- java设计模式学习(-)
- [RxJS] Using Observable.create for fine-grained control
- linux tcpdump的简单应用
- android studio使用记录
- Redis中常用命令
- ' '.join(source)解析
- POJ 1753 Flip Game (DFS + 枚举)
- VC调用VB DLL