android MVP框架
原文地址:http://blog.csdn.net/guxiao1201/article/details/40147209
在开发Android应用时,相信很多同学遇到和我一样的情况,虽然项目刚开始构架时自认为MVC层级分的特别明确,但最终往往是一个Activity有好几百行代码,而且逻辑和UI显示完全混杂在一起,导致后续项目的维护成本巨大。一个偶然的机会看到有种MVP模式(Mode-View-Presenter)可以比MVC更好的解耦和,然后好奇的研究了下这个模式并尝试在现在项目中进行推广。下面就把自己目前学习到知识总结出来。
MVP模式将分为两篇博客进行总结:
一、MVP简介
我理解的MVP是由MVC优化衍生出来的一种模式,MVP将MVC中的Controller层进行了优化而生成了Presenter。Presenter单词翻译为“提出者;任命者;主持人”,Presenter层和MVC的Controller一样,负责核心逻辑,但不一样的是Presenter通过接口协议进行数据传递,并阻断了View和Model的直接联系,从而使View和Model更加专注于自身业务逻辑。
二、MVP结构
View
View通常来说就是有Activity、Fragment实现的,View会包含一个或多个Presenter的引用来满足视图的业务逻辑。View和Presenter的交互是双向的,即View层可以调用Presenter的逻辑方法,Presenter也可以控制View的显示。
Presenter
Presenter作为Model和View的桥梁,负责从Model拿到数据进行处理并返回给View。但Presenter和其他两层的沟通是通过接口协议进行的,所以每个Presenter中通常会包涵一个或多个接口协议。
Model
和MVC一样,作为数据仓库只负责对APP数据进行处理。
Android开发MVP模式实践中的示例将APP分为以下四层。
- Entities:APP中的业务类。
- Use Cases:负责从将Entities中的数据进行处理和包装。
- Presenters:从Use Cases获取处理好的数据,然后根据需求逻辑为UI提供合适的数据。
- UI:从Presenters获取处理好的最终数据,和用户进行直接交互。
Cases,将数据逻辑处理交给UseCases从而让Presenter更专心于UI交互。
三、MVP VS MVC
在把原本MVC模式的代码修改为MVP模式后,总结这两个模式在实际使用过程中的不同点基本上总结为两点:
- 各个层之间通过接口协议进行沟通;
- View和Model不再进行直接交互;
四、总结
MVP将会为你的代码带来如下好处:
- View和Model之间的耦合度降低,使其更关注自身业务逻辑;
- 便于单元测试;
- 代码复用率提高;
- 代码框架更适用于快速迭代开发;
android MVP框架的更多相关文章
- 如何实现自己的Android MVP框架?
相信熟悉android开发的童鞋对MVP框架应该都不陌生吧,网上很多关于android中实现MVP的文章,大家可以直接搜索学习.这些文章中,MVP的实现思路基本都是把Activity.Fragment ...
- Android MVP框架模式
结合前一篇MVC框架模式 为了更好地细分视图(View)与模型(Model)的功能,让View专注于处理数据的可视化以及与用户的交互,同时让Model只关系数据的处理,基于MVC概念的MVP(Mode ...
- Android MVP框架实现登录案例
一.Model package com.czhappy.mvpdemo.model; /** * author: chenzheng * created on: 2019/5/16 11:06 * d ...
- Android MVP Presenter 中引发的空指针异常
一.概述 最近对 googlesamples/android-architecture 中的 MVP-dagger 进行了学习.对照项目的 MVP-dagger 分支,对 MVP-dagger 进行了 ...
- android mvp高速开发框架介绍(继续dileber)
android mvp框架:dileber(https://github.com/dileber/dileber.git) 继续为大家介绍android mvp开源框架 dileber 官方交流qq群 ...
- android mvp高速开发框架介绍(dileber的简单介绍)
今天我为大家介绍一款android mvp框架:dileber(https://github.com/dileber/dileber.git) 官方交流qq群:171443726 我个人qq:2971 ...
- android mvp高速开发框架介绍(dileber使用之图片下载工具)
这几天忙着工作- 今天抽时间又把框架的bug处理了一下--并且把volley的源代码改动了一下 android mvp框架:dileber(https://github.com/dileber/dil ...
- android mvp高速开发框架介绍(dileber使用之小工具使用)
android mvp框架:dileber(https://github.com/dileber/dileber.git) 继续为大家介绍android mvp开源框架 dileber 官方交流qq群 ...
- 【腾讯Bugly干货分享】一步一步实现Android的MVP框架
本文来自于腾讯bugly开发者社区,非经作者同意,请勿转载,原文地址:http://dev.qq.com/topic/5799d7844bef22a823b3ad44 内容大纲: Android 开发 ...
随机推荐
- Android样式(style)和主题(theme)
样式和主题 样式是指为 View 或窗口指定外观和格式的属性集合.样式可以指定高度.填充.字体颜色.字号.背景色等许多属性. 样式是在与指定布局的 XML 不同的 XML 资源中进行定义. Andro ...
- Linux 高性能服务器编程——多线程编程
问题聚焦: 在简单地介绍线程的基本知识之后,主要讨论三个方面的内容: 1 创建线程和结束线程: 2 读取和设置线程属性: 3 线程同步方式:POSIX信号量,互斥锁和条件变量 ...
- Spring之Core模块
Core模块主要的功能是实现了控制反转与依赖注入.Bean配置以及加载.Core模块中有Beans.BeanFactory.BeanDefinitions.ApplicationContext等概念 ...
- java虚拟机 jvm 局部变量表实战
java局部变量表是栈帧重要组中部分之一.他主要保存函数的参数以及局部的变量信息.局部变量表中的变量作用域是当前调用的函数.函数调用结束后,随着函数栈帧的销毁.局部变量表也会随之销毁,释放空间. 由于 ...
- JQuery其他常用函数
isArray(obj) 检测obj否为一个数组对象 isFunction(obj) 检测obj否为一个函数 isEmptyO ...
- 因 URL 意外地以“/HelloWorld”结束,请求格式无法识别
http://www.cnblogs.com/AngelLee2009/p/3540527.html
- 一个简单的安卓+Servlet图片上传例子
例子比较 简单,服务端为Java Web Servlet,doPost方法中接收图片并保存,然后将保存的图片名返回给客户端,关键代码: @SuppressWarnings("deprecat ...
- 【嵌入式开发】 Bootloader 详解 ( 代码环境 | ARM 启动流程 | uboot 工作流程 | 架构设计)
作者 : 韩曙亮 博客地址 : http://blog.csdn.net/shulianghan/article/details/42462795 转载请著名出处 相关资源下载 : -- u-boo ...
- 如何在Cocos2D 1.0 中掩饰一个精灵(五)
大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请告诉我,如果觉得不错请多多支持点赞.谢谢! hopy ;) 掩饰和CCRenderTexture CCRenderTextu ...
- jQuery 异步上传插件 Uploadify302 使用 (JavaEE Spring MVC)
Uploadify是JQuery的一个上传插件,实现的效果非常不错,带进度显示.而且是Ajax的,省去了自己写Ajax上传功能的麻烦.不过官方提供的实例时php版本的,本文将详细介绍Uploadify ...