news 2026/1/22 4:14:15

从前端路由到 Android ARouter:观察者模式在不同平台的同一种落地

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
从前端路由到 Android ARouter:观察者模式在不同平台的同一种落地

一、先给读者一个“统一结论”(很重要)

你可以在这一节一开头就点破:

不论是前端路由、Android 的 ARouter,还是 Flutter 的 go_router,
它们表面 API 完全不同,但底层解决的是同一件事
当“导航状态”发生变化时,系统自动完成页面切换。
这背后,本质都是观察者模式

二、前端路由(Vue / React Router)在干什么?

1️⃣ 前端路由的核心事实

在前端世界里,有一个天然的“被观察者”

URL

  • URL 变化

  • 页面自动变化

  • 开发者不需要手动“销毁/创建页面”

2️⃣ 一个典型前端路由表示例

const routes = [ { path: '/login', component: Login }, { path: '/order/:id', component: Order } ]

当 URL 从:

/login → /order/123

发生变化时:

  • 路由系统监听到 URL 变化
  • 匹配路由表
  • 渲染新的组件

3️⃣ 用观察者模式语言解释

角色对应
SubjectURL / history
ObserverRouter
notifyURL change
update重新渲染组件

前端路由 = 浏览器 URL 变化 → 路由系统自动响应

三、前端的beforeEach是什么角色?

router.beforeEach((to, from, next) => { if (!isLogin && to.meta.auth) { next('/login') } else { next() } })

用模式语言解释:

  • URL 即将变化

  • 路由系统拦截这次变化

  • 根据当前状态决定:

    • 放行

    • 或重定向

你可以总结一句:

beforeEach并不是“跳转逻辑”,
而是观察到路由状态变化前的一个统一决策点

四、Android 的 ARouter 在干什么?

1️⃣ ARouter 的关键设计

@Route(path = "/order/detail") public class OrderDetailActivity extends Activity {}
ARouter.getInstance() .build("/order/detail") .navigation();

表面看是:

  • path → Activity

但本质是:

  • 路径字符串(路由状态)变化

  • 路由系统查表

  • 启动对应页面

2️⃣ ARouter 的拦截器(非常关键)

public class LoginInterceptor implements IInterceptor { @Override public void process(Postcard postcard, InterceptorCallback callback) { if (!isLogin()) { callback.onInterrupt(new Exception("need login")); } else { callback.onContinue(postcard); } } }

用观察者模式解释:

角色对应
Subject路由请求(Postcard)
ObserverInterceptor
notifynavigation()
update是否放行 / 中断

ARouter 把“页面跳转”从直接 startActivity
变成了路径驱动 + 集中治理

五、Flutter go_router 放在同一条线上看

你前面已经讲过,这里只需要对齐抽象

final router = GoRouter( refreshListenable: authState, redirect: ... );
抽象前端ARoutergo_router
路由状态URLpathlocation
被观察者history路由请求authState / location
观察者RouterInterceptorGoRouter
守卫beforeEachInterceptorredirect
页面切换组件渲染ActivityWidget

一句话总结:

不同平台的路由系统,
都在监听某种“导航状态”的变化,
然后自动完成页面切换。

六、为什么三者都会“长成声明式路由”?

你可以在这一节点出演进原因

  • 页面数量变多

  • 入口变多(深链 / 推送 / 外部唤起)

  • 登录态 / 权限 / 灰度

  • 命令式跳转失控

最终都会走向:

集中路由表 + 统一守卫 + 状态驱动

七、“认知升维总结”(非常重要)

当我把前端路由、Android ARouter、Flutter go_router
放在同一个视角下看时,
才发现它们并不是三套不同的技术,
而是同一个设计模式在不同平台上的自然实现

理解这一点后,
学新框架不再是记 API,
而是识别模式。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2025/12/31 8:11:37

【课程设计/毕业设计】基于SpringBoot的传统戏曲学习推广管理系统设计和实现基于springboot的戏曲学习管理系统基于springboot沉浸式戏曲文化体验系统【附源码、数据库、万字文档】

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2025/12/25 16:21:07

学长亲荐8个AI论文工具,本科生轻松搞定毕业论文!

学长亲荐8个AI论文工具,本科生轻松搞定毕业论文! 论文写作的“隐形助手”,你真的不需要多一个吗? 在如今这个信息爆炸的时代,AI 工具已经成为许多学生和科研工作者的得力助手。尤其在撰写毕业论文的过程中,…

作者头像 李华
网站建设 2026/1/13 1:04:02

【AI自动化新纪元】:Open-AutoGLM如何实现对iPhone的远程操作?

第一章:Open-AutoGLM 能操作苹果手机吗目前,Open-AutoGLM 作为一个实验性的自动化语言驱动框架,主要聚焦于在开放环境下的任务自动化与自然语言指令解析。其核心能力依赖于对操作系统接口的访问权限以及设备控制链路的建立。由于苹果iOS系统采…

作者头像 李华
网站建设 2025/12/29 12:29:03

还在为大模型部署发愁?,Open-AutoGLM云端部署全栈解决方案来了

第一章:Open-AutoGLM云端部署概述Open-AutoGLM 是一款基于开源大语言模型的自动化代码生成工具,支持在多种云环境中进行灵活部署。其核心架构采用微服务设计,能够与主流云平台无缝集成,实现高可用、可扩展的智能编程辅助能力。部署…

作者头像 李华
网站建设 2026/1/19 2:50:59

揭秘Open-AutoGLM云端部署全流程:5步实现模型秒级响应与自动扩缩容

第一章:揭秘Open-AutoGLM云端部署的核心价值在人工智能模型快速迭代的背景下,Open-AutoGLM 作为一款支持自动化推理与生成任务的大语言模型,其云端部署已成为企业提升服务响应效率与降低运维成本的关键路径。通过将模型部署至云平台&#xff…

作者头像 李华