Android应用架构之MVP--->天气实例
我们知道。Android App 本质上抽象成两个层次:视图和数据。为了App在发展过程中高速的适应变化,方便维护和高速迭代,我们要将数据和视图解耦,而在解藕方面我们的前辈们在漫长的软件开发经验中为我们提供了两套流行的指导框架:MVC和MVP,当中MVP近年来在Android应用开发上逐渐流行。近期在开发群里有小伙伴也问道了这个问题,本章我将结合详细样例依据自己的理解用MVP进行实现。
先看下最后的效果:
最后的效果非常easy吧,那么我们就来梳理一下整个思路:
MVP流程。大概能够分成四步:
1.UI引用Presenter来实现View的方法;
2.Presenter调用Model,走Model里边的逻辑;
3.Model详细逻辑实现,而且回调Presenter;
4.Presenter回调View,即回到UI,回调View方法
gradle文件
compile 'com.loopj.android:android-async-http:1.4.9'
compile 'com.google.code.gson:gson:2.3.1'
说明:1.网络请求使用了async-http;
2.json解析使用的gson。
3.本实例数据来源于聚合数据:https://www.juhe.cn/ 有须要的可自取。
其它也没什么了,直接上图应该会非常清晰:
1.项目结构:
2.MVP之M
CityResultModelBean.java
本实例的bean比較复杂,字段较多。主要是依据聚合接口返回的response而定的,能够忽略,纯bean。无他。
CityWeatherModel.java
详细业务的处理,此处就是数据的获取,检索和解析等操作。
3.MVP之V
WeatherView.java
处理业务须要哪些方法;
MainActivity.java
仅仅关心本层的数据和ui展示;
3.MVP之P:
WeatherPresenter.java 是model和view的连接桥梁。从model检索到数据之后返回给view进行展示。
小结:
MVC模式
视图(View):用户界面。
控制器(Controller):业务逻辑
模型(Model):数据保存
View 传送指令到 Controller
Controller 完毕业务逻辑后,要求 Model 改变状态
Model 将新的数据发送到 View,用户得到反馈
在传统的mvc模式中,可能activity和fragment很多其它扮演了view和controller的双重身份,数据和视图的耦合程度较高。
MVP模式
在MVP中,Activity和Fragment扮演View层,Presenter相当于MVC模式中Controller层,处理业务逻辑。
一般一个Activity都有一个对应的presenter通过model来处理数据。
最后,推荐一个公众号 anything_android
包含但不局限于android前沿火热技术快送,干货分享,职场焦点,IT、数码3C业界头条咨询,当然偶尔也会有段子和鸡汤。
Android应用架构之MVP--->天气实例的更多相关文章
- Android APP架构设计——MVP的使用示例
0. 前言 为了更好地进行移动端架构设计,我们最常用的就是MVC.MVP和MVVM,作为三个最耳熟能详的三大架构,应用可谓非常广泛.对于这三种架构设计以及优缺点已经在Android APP架构设计-- ...
- 转:Android开发中的MVP架构(最后链接资源不错)
Android开发中的MVP架构 最近越来越多的人开始谈论架构.我周围的同事和工程师也是如此.尽管我还不是特别深入理解MVP和DDD,但是我们的新项目还是决定通过MVP来构建. 这篇文章是我通过研究和 ...
- Android应用架构
Android开发生态圈的节奏非常之快.每周都会有新的工具诞生,类库的更新,博客的发表以及技术探讨.如果你外出度假一个月,当你回来的时候可能已经发布了新版本的Support Library或者Play ...
- 【译】Android应用架构
Android开发生态圈的节奏非常之快.每周都会有新的工具诞生,类库的更新,博客的发表以及技术探讨.如果你外出度假一个月,当你回来的时候可能已经发布了新版本的Support Library或者Play ...
- 改造 Android 官方架构组件 ViewModel
前言 Android 官方架构组件在今年 5 月份 Google I/O 大会上被公布, 直到 11 月份一直都是测试版, 由于工作比较繁忙, 期间我只是看过类似的文章, 但没有在实际项目中使用过, ...
- Android系统架构说明介绍
Android系统架构说明介绍 Android系统架构和一些普遍的操作系统差不多,都是采用了分层的架构,从他们之间的架构图看,Android系统架构分为四个层,从高层到低层分别是应用程序层.应用程序框 ...
- 转载: android 学习架构
http://www.cnblogs.com/forlina/archive/2011/06/29/2093332.html 引言 通过前面两篇: Android 开发之旅:环境搭建及HelloWor ...
- Android MVPR 架构模式
最近我在尝试让 Google 的 IO App 变得可单元测试,我这样做的其中一个原因是验证 Freeman 和 Pryce 在引用中对单元测试的总结.即使现在我还是没有把 IOSched 中的任何一 ...
- 转:微信Android客户端架构演进之路
转自: http://www.infoq.com/cn/articles/wechat-android-app-architecture 微信Android客户端架构演进之路 作者 赵原 发布于 20 ...
- Qualcomm Android display架构分析
Android display架构分析(一) http://blog.csdn.net/BonderWu/archive/2010/08/12/5805961.aspx http://hi.baidu ...
随机推荐
- 快速幂取模(当数很大时,相乘long long也会超出的解决办法)
当几个数连续乘最后取模时,可以将每个数字先取模,最后再取模,即%对于*具有结合律.但是如果当用来取模的数本身就很大,采取上述方法就不行了.这个时候可以借鉴快速幂取模的方法,来达到大数相乘取模的效果. ...
- Tomcat配置和Spring MVC配置
Tomcat启动时,先找系统变量CATALINA_BASE,如果没有,则找CATALINA_HOME.然后找这个变量所指的目录下的conf文件夹,从中读取配置文件.最重要的配置文件:server.xm ...
- 【分享】· 图床&在线分享演示文稿
关于图床 什么是图床? 这并不是一个多么高大上的名词概念!用比较通俗的话来说,当你在撰写新文章时,你需要去插入图片以使得你的文章内容更加直观.易懂,这个时候有以下几种办法: 在博客根目录的 sourc ...
- Jackson的高级应用(转)
Jackson 是当前用的比较广泛的,用来序列化和反序列化 JSON 的 Java 的开源框架.Jackson 社 区相对比较活跃,更新速度也比较快, 从 Github 中的统计来看,Jackson ...
- 纯CSS实现网站常用的五角星评分和分数展示交互效果
最近做的一个项目涉及到评分和展示分数的模块,UI设计师也给了几个切好的图片,实现五角星评分方式很多,本质爱折腾的精神和对性能追求以及便于维护的考虑,搜集和尝试了很多方式,最终采用了纯css驱动的实现方 ...
- tiny4412 串口驱动分析三 --- log打印的几个阶段之内核自解压
作者:彭东林 邮箱:pengdonglin137@163.com 开发板:tiny4412ADK+S700 4GB Flash 主机:Wind7 64位 虚拟机:Vmware+Ubuntu12_04 ...
- 阅读 Android源码的一些姿势
日常开发中怎么阅读源码 找到正确的源码 IDE 是日常经常用的东西,Eclipse 就不说了,直接从 Android Studio(基于 IntelliJ Community 版本改造)开始. 我们平 ...
- 设计模式之过滤器模式(php实现)
/** * github地址:https://github.com/ZQCard/design_pattern * 过滤器模式(Filter Pattern)或标准模式(Criteria Patter ...
- 4. Median of Two Sorted Arrays(topK-logk)
4. Median of Two Sorted Arrays 题目 There are two sorted arrays nums1 and nums2 of size m and n respec ...
- dubbo接口压测工具stresstester使用
dubbo接口压测工具stresstester使用 https://blog.csdn.net/u013822349/article/details/79412719