前言
首先表明,这篇博客 80% 的内容是翻译自 Christopher Elias 的文章 《Understanding MVVM pattern for Android in 2021》。作者的原文题目翻译过来是 《理解 2021 年适用于 Android 的 MVVM 模式》,怕被喷标题党(因为感觉这个题目略大),所以我不太敢直接用原文题目Orz
本着尊重原创的精神,我是征得原作者同意后才敢翻译的,喏↓↓↓↓↓↓↓↓
网上介绍 MVVM 的文章有很多,讲得也都很棒!既然网上已经有那么多介绍 MVVM 的文章了,为什么我还是想要翻译这篇呢?
这篇文章它最吸引我的地方在于,作者在数据的获取到将数据渲染到界面的过程中抽象出了一个 State 类,将获取数据后的所有可能结果都封装到这个 State 类中,有很好的高内聚低耦合性,并且结合 Jetpack 组件中的 ViewModel、LiveData 简直不要太好用!所以我想要将这篇文章翻译成中文,一来是希望通过笔记的形式加深自己的印象,二来呢也是希望能让更多人看到这一优秀的实现方式。
基于我的理解,实现了一个小 demo。需求很简单,打开 APP,模拟从网络获取数据(一个水果名 List),并渲染到界面上,如下图。这里给出我的实现。
这里同时贴出 Christopher Elias 的 实现。这是一个大的项目,其中包含了这种实现方式,如果只是想要理解这种设计方式,我觉得看我的实现应该就足够了。Chris 的代码对于不熟悉 Kotlin 的人(譬如我)可能有点难以理解,他用到很多 Kotlin 的高级特性,代码写的非常漂亮,读一读大佬的实现还是可以学到一些东西的。
好啦,那废话不多说,我