如今,模块化已经屡见不鲜,目前很多公司都在做。然而在使用模块化的过程中,各个模块之间是如何通信的?我们一起先看下具体的需求:

PM:这一版本做一个下载功能,包含我的下载,待下载,正在下载等,下载入口会在A,B,C模块中都会显示,而且需要把下载状态和进度实时显示到 UI 上。

我:从需求出发,需要设计一个下载模块。但是,A,B,C 模块都需要实时了解当前的下载状态和进度以展示到 UI,那么问题来了如何做到下载模块与 A,B,C 模块之间进行下载状态和进度同步呢?

模块之间数据同步可以有以下几种方式:

  • 1.通知 通知是最简单的方式,每当下载状态和进度变化的时候,需要发通知出去,这样其它模块即可接收到当前的变化。他的缺点是通知太分散,不太好控制。

  • 2.注册监听 下载队列是一个单例,可以直接通过路由的方式注册监听,当下载状态和进度变化的时候给注册者发送消息。

如果你有什么好的方式,欢迎讨论,这条小集只是起到了抛砖引玉的作用,希望大家可以把更好的方案分享出来。