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
该/app
directoy包含遵循传统的标准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的介绍 ...
随机推荐
- Nginx的server为0.0.0.0/0.0.0.1的作用?
看到kong默认的代理和后台server 都是0.0.0.0,代理到上游的服务器proxy_pass $upstream_scheme://kong_upstream;配置如下, upstream k ...
- [转]C++函数模板与模板函数
1.函数模板的声明和模板函数的生成 1.1函数模板的声明 函数模板可以用来创建一个通用的函数,以支持多种不同的形参,避免重载函数的函数体重复设计.它的最大特点是把函数使用的数据类型作为参数. ...
- Android 高版本API方法在低版本系统上的兼容性处理
Android 版本更替,新的版本带来新的特性,新的方法. 新的方法带来许多便利,但无法在低版本系统上运行,如果兼容性处理不恰当,APP在低版本系统上,运行时将会crash. 本文以一个具体的例子说明 ...
- 【spring boot】15.spring boot项目 采用Druid数据库连接池,并启用druid监控功能
在http://www.cnblogs.com/sxdcgaq8080/p/9039442.html的基础上,来看看spring boot项目中采用Druid连接池. GitHub地址:示例代码 == ...
- Go -- 在Go语言中使用JSON struct
Encode 将一个对象编码成JSON数据,接受一个interface{}对象,返回[]byte和error: func Marshal(v interface{}) ([]byte, error) ...
- [Android Traffic] 根据网络类型更改下载模式
转载自: http://blog.csdn.net/kesenhoo/article/details/7396321 Modifying your Download Patterns Based on ...
- C++ 获取URL图片、html文件,CInternetSession 【转】
http://blog.csdn.net/gnixuyil/article/details/7688439 获取网络图片 CString URL="http://www.google.com ...
- crossapp里的位置设置
crossapp里有Frame.Center,这两种都是可以用来确定一个view的位置和大小. 不同点:Frame定位是以View的左上角为参照点,Center是以View的中心点为参照点 注意cro ...
- ES6里的修饰器Decorator
修饰器(Decorator)是一个函数,用来修改类的行为. 一.概述 ES6 引入了这项功能,目前 Babel 转码器已经支持Decorator 首先,安装babel-core和babel-plugi ...
- Python-使用Magellan进行数据匹配总结
参考:http://www.biggorilla.org/zh-hans/walkt/ 使用Magellan进行数据匹配过程如下: 假设有两个数据源为A和B, A共有四列数据:(A_Column1,A ...