重构 Plaid 的目标不只是修复内容源 API 接口的失效问题,更重要的是应用最新的 Android Jetpack、Kotlin 语言特性和 Android 应用架构指南,所以 Plaid 2.0 将不单单是 Material Design 的示例应用,同时还将是一个使用了 Kotlin 的符合 Android 应用架构指南的示例应用。html
本文将为你们分享和总结 Android 团队工程师们在重写 Plaid 应用时的实践经验,前面部分将着重分享应用的分层设计,后面部分是具体使用 Kotlin 实现的视频,扩展阅读部分提供了更多 Plaid 重构以及 Kotlin 相关知识的文章。android
起初,咱们定位 Plaid 将是一款 Material Design 样例应用,咱们但愿经过它展现 Material Design 的能够为交互体验带来的改进。git
不过,咱们有失去也有获得: Kotlin 做为 Android 官方的首要支持编程语言这一重大的消息在 17 年 Google I/O 时公布。同年 11 月,Android Jetpack 系列内的架构组件 (Architecture Components) 1.0 版正式发布,用以帮助开发者构建高质量的应用,这份指南包含了移动应用用户体验的说明,常见的架构原则,推荐的应用架构说明和最佳实践等。github
所以,在决定修复 Plaid 应用 Bug 的同时,咱们但愿为这个项目加入 Jetpack 架构组件和引入 Kotlin 语言,使其成为一个更 "时尚" 的应用。数据库
随着 Android 平台不断的改进以及 Kotlin 在全球开发者社区的迅速流行,达到这个目标变得更容易了。好比能够经过使用 Android App Bundles 动态增添新的新闻源,使用新的 AndroidX 库,使用 Jetpack,遵循 Android 应用架构指南构建应用等。编程
首先是 Data 层,这一层咱们会关注数据的交互和持久化存储,咱们设计了 RemoteDataSource 和 LocalDataSource 两个类,其中 RemoteDataSource 将用来与 API 服务交互,构造请求数据,接收响应数据;而 LocalDataSource 则会负责将数据存储在本地,存储的方式能够经过数据库,或者 SharedPreferences。后端
实际的业务逻辑一般会比较复杂,咱们设计了一些小型的轻量级而且能够复用的 UseCase 类,这些类将基于实际的业务逻辑来处理数据,由这些 UseCase 类构成了应用架构的第二层: Domain 层。特别要提到的是,每一个 UseCase 类将只负责完成一个单独的任务,好比回复评论等:缓存
Kotlin 语言有诸多特性 (如协程的 suspend 函数、扩展函数和高阶函数等) 能够帮助开发者更好的构建应用。好比,咱们在重构 Plaid 应用时具体的利用扩展函数来提升 "when" 表达式的可读性。请参考下面的视频来了解更多有关的技巧和最佳实践:网络
本文仅针对 Plaid 的应用架构和 Kotlin 实现进行了简单描述,更多关于 Plaid 相关文章,包括 Android App Bundles、AndroidX 重构,以及多模块的依赖注入实践等,请参看咱们经过掘金翻译计划的社区内容项目发布的文章:架构
Plaid 2.0 应用在 GitHub 开源,查看更详细的代码实现,或参与本开源项目,请查看: github.com/android/pla…
关于 Kotlin 的更多知识,能够参考咱们以前发布的内容《31 天,从浅到深轻松学习 Kotlin》,或 点击这里 访问 Android 开发者文档网站。