Marvel:一个 MVP 范例级别的 Android 漫威客户端
2026/7/8 6:27:45 网站建设 项目流程

文章目录

  • Marvel:一个 MVP 范例级别的 Android 漫威客户端
    • 1、 这个仓库里有什么
    • 2、 项目结构为什么值得看
    • 3、 技术栈长什么样
    • 4、 测试怎么处理
    • 5、 适合谁翻一翻

Marvel:一个 MVP 范例级别的 Android 漫威客户端

mohsenoid/marvel 在 GitHub 上拿到了 229 Star。

这是一个 Android 客户端,对接 Marvel.com 的角色数据接口。作者 Mohsen Mirhoseini 当年为了 smava GmbH 的技术评估写的,后来当成 MVP 教学样本,配合 Medium 上的五篇连载文章一起发布。

1、 这个仓库里有什么

一个能跑的 Marvel 角色搜索 App,版本号 1.0.1,最后一次更新停在 2018 年 6 月 27 日。

主界面进来就是两个 Fragment:搜索页和缓存页。前者负责按名字找角色,后者列出最近查过的角色。点开角色进到 Character Activity 看详情。

网络异常时不会让界面卡死,弹个 Snackbar 提示用户重连或重试。生命周期和网络行为都按 Android 规矩处理过,不同屏幕尺寸适配也做了。

2、 项目结构为什么值得看

整块代码拆成两个模块:Core-Lib 和 App。

Core-Lib 是纯 Java 写的业务逻辑,跟 Android 完全解耦。App 模块只放 Android UI 相关的东西,负责把 Core-Lib 接到操作系统上。理论上 Core-Lib 可以换个界面层直接跑成命令行或者 Web 应用。

分层走的是 MVP。Antonio Leiva 那套 Android MVP 实践是参考来源。

View 层是 MainActivity 和它内部的两个 Fragment。Fragment 只干一件事:用户操作触发时调一下 presenter 的方法,不写业务逻辑。

Presenter 层是 Search 和 Cache 的两个 Presenter。从后端或数据库取数据,格式化好交给 View,并决定用户交互时该做什么。

Model 层是 Search Interactor,专门负责对接网络服务的数据网关。

3、 技术栈长什么样

2018 年的项目,工具链是 Android Studio 3.1.3、gradle-plugin 4.4、Build Tools 27.1.1、Compile SDK 27、MinSdk 14。

依赖列表里能看到的都是当年 Android 圈的主流选择:

  • 网络层:Retrofit 2.1.0 配 OkHttp 3.4.1,Square 出品,Debug 模式下日志挺友好
  • 数据库:OrmLite 5.0,一个轻量 ORM。作者注释里提到也能换成 realm 或 DBFlow
  • 响应式:RxJava2 2.1.13、RxAndroid 2.0.2、RxBinding 2.1.1,串联各层通信
  • 依赖注入:Dagger 2.8,Square 原做、Google 现维护
  • 视图绑定:ButterKnife 8.8.1,加上 Google 新出的 DataBinding 库做 Adapter
  • 图片加载:Picasso 2.5.2,配合 Palette 支持库从图片里取主色当背景
  • 日志:Timber 4.7.0,Jake Wharton 的库,Release 版本里自动不输出 log
  • 其他:Firebase 16.0.1 做分析和崩溃上报,作者自己的 AndroidUtils 1.0.11 处理些通用功能

依赖版本统一放在 libraries.gradle 里,避免多模块间的版本冲突。

4、 测试怎么处理

UI 功能和核心类都写了 Test Case,覆盖工具是 jUnit 4.12、Mockito 1.10.19、Robolectric 3.8、Espresso 2.2.2。Dagger 的 mocking 也纳入了测试范围。

持续集成绑了 CircleCI 和 Travis CI 两套,跟 GitHub 仓库联动。

5、 适合谁翻一翻

  • 想看一个完整 MVP 落地项目的 Android 开发者
  • 研究 Dagger + Retrofit + RxJava 经典组合如何协作的人
  • 需要参照成熟项目结构来组织自己代码的工程师

作者在 Medium 上写了五篇连载,从项目结构讲到 Dagger、Retrofit、RxJava,最后落到用 Dagger 配 Espresso 写测试。链接在仓库 README 末尾。想看代码对应那一系列文章的状态,可以切到Yet-another-MVP-article这个 tag。

ADME 末尾。想看代码对应那一系列文章的状态,可以切到Yet-another-MVP-article这个 tag。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询