archi

介绍:

演示和比较如何用不同的架构模式开发安卓app。同样的app使用传统的模式,MVP模式,MVVM模式开发了三次。

运行效果:

使用说明:

演示和比较如何用不同的架构模式开发安卓app。同样的app使用下面几种不同的方法开发了三次:

  • Standard Android: 传统的模式: layouts, Activities/Fragments 和 Model。

  • MVP: Model View Presenter.

  • MVVM: Model View ViewModel with data binding.

App

app显示了指定用户名下的github公共项目列表。点击其中一个会打开项目的详情界面,这里会显示项目的更多信息,项目作者的信息也显示在这个界面。

blob.png

使用到的库

  • AppCompat, CardView and RecyclerView

  • Data Binding (only MVVM)

  • RxJava & RxAndroid

  • Retrofit 2

  • Picasso

  • Mockito

  • Robolectric

Standard Android

/app目录包含了遵循传统安卓开发模式的实现。两个布局文件,两个Activity以及model。三种实现中model都是完全一样的:Repository, User 和一个  retrofit service (GithubService)。

这种模式下,Activity负责调用GithubService,处理数据和更新view。它扮演者类似于controller的角色但是又 负责本属于view的一些额外工作。标准模式的问题在于Activity和Fragment可能非常大,非常难于测试。这也是为什么我没有在这种模式下写测试代码的原因。

MVP - Model View Presenter

在 /app-mvp目录下你可以找到遵循MVP模式的实现。使用mvp时,Activity和Fragment变成了view层的一部分而把绝大多数工作代理给了presenter。每一个Activity都有一个相应的presenter来处理从GithubService获取model。它们还在数据准备好显示的时候通知Activity。单元测试变得非常简单。

MVVM - Model View ViewModel

这个模式最近因为data binding 库开始流行。你可以在 /app-mvvm目录下找到其实现。在这里,当通过数据绑定从view请求的时候,ViewModels从model接收数据。这种模式下,Activity和Fragment变的非常轻。并且因为ViewModel从view解耦,单元测试也好写一些。

已下载
0