是时候告别业务层 Manager 了:Android 架构升级到 UseCase + Repository

在很多 Android 项目中,我们经常能看到各种 Manager:

这些类似乎什么都能做:

  • 管理数据
  • 协调业务
  • 调用网络
  • 操作数据库
  • 维护状态

于是一个 Manager 很容易变成这样:

看起来似乎没什么问题,但随着业务增长,这些 Manager 往往会逐渐变成:

业务逻辑、数据逻辑、状态管理全部混在一起。

但问题是:

Manager 从来不是一种架构。

在现代软件架构中,例如 Clean Architecture, 业务逻辑应该被清晰地拆分为:

这篇文章我们就来聊聊:

为什么是时候告别 Manager 了,以及如何用 UseCase + Repository 重建 Android 架构。


一、为什么 Android 项目到处都是 Manager

Android 项目大量使用 Manager,其实是历史原因。

早期 Android Framework 就大量使用这种命名:

例如 Android SDK 中的系统服务几乎都是 Manager。

于是很多开发者也沿用了这种模式:

但这些类在实际项目中通常会承担多种职责:

这就违背了软件架构中最重要的原则:


二、Manager 架构的三个核心问题

随着项目变大,Manager 模式通常会出现三个问题。


1 Manager 会变成"上帝类"

例如:

随着业务增长:

变成一个难以维护的类。

2 业务逻辑和数据逻辑混在一起

例如:

这里其实混合了两种职责:

架构层级被打乱。

3 无法形成清晰的业务边界

当所有逻辑都写在 Manager 里:

ViewModel 直接调用各种方法:

但你很难知道:

代码结构会越来越混乱。


三、Clean Architecture 的解决方案

在 Clean Architecture 中,系统被拆成清晰的层:

在 Android 中通常对应:

职责变得非常清晰:


四、UseCase:业务逻辑的唯一入口

UseCase 的职责只有一个:

例如:

代码示例:

UseCase 的特点:

这就是 业务边界(Business Boundary)。

五、Repository:数据边界

Repository 负责:

例如:

实现类:

Repository 的职责:

例如:


六、最终的 Android 架构

当我们用 UseCase + Repository 重新组织代码时,架构会变成:

每一层职责非常清晰:


七、Manager → Clean Architecture

很多项目其实可以这样迁移:

旧结构:

新结构:

Manager 被自然拆解成:

架构会清晰很多。


八、什么时候 Manager 仍然是合理的

虽然业务代码不推荐使用 Manager,但有两种情况仍然合理:

1 系统能力封装

例如:

这是 系统 API 适配层。


2 第三方 SDK 封装

例如:

用于隔离第三方 SDK。

九、总结

Manager 在 Android 项目中非常常见,但它并不是一种架构模式。

随着业务复杂度增加,Manager 很容易变成:

而在现代 Android 架构中,更推荐使用:

来建立清晰的业务边界和数据边界。

简单来说:

当你开始这样组织代码时,架构会变得更加清晰、可维护。

所以:

结尾:是时候告别什么都往 Manager 里塞的习惯了。

参考

用一个小 Demo,带你入门安卓 Clean Architecture

从送外卖看Android Clean架构:为什么老板不需要知道外卖员开什么车?

相关推荐
大圣编蚕7 小时前
初探 NDK 的世界:从零开始理解 Android 原生开发
android
云贝贝贝7 小时前
MySQL 慢查询定位与索引优化实战
android
骑着蜗牛撵大象3278 小时前
服务下线不再炸:分层关闭、TCP 存活探测与负载均衡排水的落地套路
android·tcp/ip·负载均衡·tcp·高可用·健康检查·优雅关闭
三少爷的鞋10 小时前
别再这么写协程了!Marcin Moskała 剖析的 几个常见协程误区与重构
android
mmsx11 小时前
Android 防二次打包第一道锁:签名校验与完整性校验
android·kotlin
mmsx11 小时前
Android 混淆不等于安全:二次打包链路完整走一遍
android·kotlin
小宋102113 小时前
Agent轨迹级评测实战:工具选择、预算超限与回归门禁
android·网络·人工智能·回归
墨天梦15 小时前
D05_ViewModel与单向数据流
android·kotlin
蒸鱼Yuzheng16 小时前
Android 构建可复现性:APK 指纹、文件级差异与供应链审计
android·apk·devops·软件供应链·可复现构建
墨天梦19 小时前
D03_Compose列表与稳定身份
android·gitee·kotlin