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公共项目列表。点击其中一个会打开项目的详情界面,这里会显示项目的更多信息,项目作者的信息也显示在这个界面。
使用到的库
-
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解耦,单元测试也好写一些。