android 学习mvc 和 mvp 和 mvvm参考项目
githup地址:https://github.com/ivacf/archi
阿尔奇
此存储库展示并比较可用于构建Android应用程序的不同架构模式。完全相同的示例应用程序使用以下方法构建三次:
- 标准的Android:布局,活动/片段和模型的传统方法。
- MVP:模型视图演示者。
- MVVM:模型视图ViewModel与数据绑定。
应用程序
示例应用程序显示给定用户名的GitHub公共存储库列表。点击其中一个将打开一个存储库详细信息屏幕,在那里可以找到有关回购的更多信息。该屏幕还显示有关存储库所有者的信息。

使用的库
- AppCompat, CardView and RecyclerView
- Data Binding (only MVVM)
- RxJava & RxAndroid
- Retrofit 2
- Picasso
- Mockito
- Robolectric
标准的Android
该/appdirectoy包含遵循传统的标准Android的办法实施。这是一对布局文件,两个活动和模型。该模型是完全的三种实现相同的,它包含:Repository,User和改装服务(GithubService)。
采用这种方法,活动负责调用GithubService,处理数据和更新视图。他们的行为就像MVC中的一个控制器,但有一些额外的责任应该成为观点的一部分。这个标准体系结构的问题是活动和片段可能变得相当大,很难测试。因此,为什么我没有为这个案例写任何单元测试。
MVP - 模型视图演示者
在/app-mvp这里你会发现这个示例应用程序遵循这个模式。当使用mvp时,Activities和Fragments成为视图层的一部分,他们将大部分工作委托给演示者。每个活动都有一个匹配的主持人,通过主持人访问模型GithubService。当数据准备好显示时,他们也通知活动。单元测试演示者变得非常容易通过嘲笑视图层(活动)。
MVVM - 模型视图ViewModel
由于数据绑定库的发布,这种模式最近开始流行起来。你会发现在执行/app-mvvm。在这种情况下,ViewModel通过数据绑定从视图请求时从模型中检索数据。有了这个模式,Activities和Fragments变得非常轻便。此外,由于ViewModel从视图中分离,所以写单元测试变得更容易。
阅读代码需要参考的资料:
Android Studio 中 Gradle 依赖的统一管理
android 学习mvc 和 mvp 和 mvvm参考项目的更多相关文章
- android中MVC,MVP和MVVM三种模式详解析
我们都知道,Android本身就采用了MVC模式,model层数据源层我们就不说了,至于view层即通过xml来体现,而 controller层的角色一般是由activity来担当的.虽然我们项目用到 ...
- Android之MVC、MVP、MVVM
本文将详细阐述以下MVC.MVP.MVVM三种理念的定义 MVC MVC全名是Model View Controller,是软件工程中的一种软件架构模式,把软件系统分为三个 基本部分:模型(Model ...
- Android中MVC、MVP、MVVM具体解释
前言 今天有时间就刚好有想写关于这几个名词.对于我来说.事实上这么多名词.思想归根究竟就是要依据项目实际.人员配置来做合理优化,既不能纸上谈兵.又不能畏惧不前.那么合理分阶段架构和完好代码才是关键,本 ...
- 认清Android框架 MVC,MVP和MVVM
编者按:现在很多时候,我们都是面向搜索(或 Google 或百度).GitHub 编程,那么,在早期没有互联网的情况下,该如何学习编程,成为一名真正的开发者?亦或是作为一名小白,如何进入互联网编程时代 ...
- Android App的架构设计:从VM、MVC、MVP到MVVM
随着Android应用开发规模的扩大,客户端业务逻辑也越来越复杂,已然不是简单的数据展示了.如同后端开发遇到瓶颈时采用的组件拆分思想,客户端也需要进行架构设计,拆分视图和数据,解除模块之间的耦合,提高 ...
- 学习设计模式之MVC、MVP、MVVM
引言:认真学习了下广义MVC模式下前端怎么写,狭义的MVC其实是有一个变化过程:MVC MVP MVVM,网上看了很多的关于这方面的介绍,以前总是将视图数据逻辑写一个模块,最近尝试分开并用组件式的开发 ...
- Android开发模式之MVC,MVP和MVVM的简单介绍与区别
相信大家对MVC,MVP和MVVM都不陌生,作为三个最耳熟能详的Android框架,它们的应用可以是非常广泛的,但是对于一些新手来说,可能对于区分它们三个都有困难,更别说在实际的项目中应用了,有些时候 ...
- Android 程序架构: MVC、MVP、MVVM、Unidirectional、Clean...
摘选自:GUI 应用程序架构的十年变迁:MVC.MVP.MVVM.Unidirectional.Cleanhttps://zhuanlan.zhihu.com/p/26799645 MV* in An ...
- MVC、MVP及MVVM之间的关系
介绍 写这篇随笔完全是为了加深自己的印象,毕竟写比看能获得得更多,另外本人对这三种模式的认识还是浅薄的,有待在以后的工作学习中有更深入的理解,因此不免会有误解,这里推荐大家阅读廖雪峰关于MVVM的介绍 ...
随机推荐
- Matrix.LookAtLH()和Matrix.LookAtRH()所表达的涵义
function lookAtLH(eye:Vector3D, at:Vector3D, up:Vector3D) 一个摄像机矩阵可有由三个部分组成:摄像机位置.目标位置以及摄像机上下方.对应的就是上 ...
- Visual Studio Package扩展——vsct文件简介
首先我们使用向导生成一个package的扩展,里面就会发现一个vsct文件.vsct文件的全称是Visual Studio Command Table,它其实就是一个xml文件,通过一定的规则来描述v ...
- Microsoft Office Excel 2007 使用笔记
1.显示表格边框: 选择要显示边框的单元格,点击“开始”选项卡中的“边框”图标,选中下拉框中的“所有框线” 2.单元格内,文字自动换行: 点击“开始”选项卡中的“自动换行”按钮 3.单元格内,文字手动 ...
- SQL Server 2008 R2 SP3 and SQL Server 2008 SP4 are now available!
时间 2014-10-02 00:00:00 SQL Server Team Blog 原文 http://blogs.technet.com/b/dataplatforminsider/arc ...
- asp.net敏感词过滤
敏感词过滤是一个能够让用户发表评论的网站的一个很重要的功能(你懂的~) 下面开始全套流程: 1.需要有一套比较完整的词库,由于我的词库很少所以就不贴上来了,网上找找应该很多 2.设计一个可以将词库导入 ...
- dmz主机就是DNAT功能的体现
端口映射和DMZ是提供内网和外网映射的,具体各自如下:DMZ:就相当于DNAT(Destination NAT),只对目的IP地址做地址转换.也就是说,收到目的IP为自己WAN口的包,统统转发给内网的 ...
- 2017.7.14 使用case when和group by将多条数据合并成一行,并且根据某些列的合并值做条件判断来生成最终值
参考来自:http://bbs.csdn.net/topics/390737006 1.效果演示 (1)不做处理 (2)合并多列,并对后四列的值做并集处理 2.SQL语句 (1)不做处理 SELECT ...
- MySQL的左外连接
代码: select t1.descid, IFNULL(t2.cnt,) as countnew, t1.description from uosdesc t1 left outer join t2 ...
- 载入本地Html文件
NSString * resousePath = [[NSBundle mainBundle]resourcePath]; NSString * filePath = [resouse ...
- Android学习(八) 打开Activity
在Android中打开窗口有两种方式,第一种是不需要返回值的,第二种是带返回值的. Main.xml文件,程序从这个窗口开始执行. <LinearLayout xmlns:android=&qu ...