# 12. 模块化带来的痛之模块之间的数据同步

**作者**: [Lefe\_x](https://weibo.com/u/5953150140)

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

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

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

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

1. 通知 通知是最简单的方式，每当下载状态和进度变化的时候，需要发通知出去，这样其它模块即可接收到当前的变化。他的缺点是通知太分散，不太好控制。
2. 注册监听 下载队列是一个单例，可以直接通过路由的方式注册监听，当下载状态和进度变化的时候给注册者发送消息。

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