快速上手 iOS 组件化 CTMediator

iOS 组件化适用于偏大型的 App ,尤其是一个 App 由多人共同开发维护时。适用组件化,能够解耦不同模块,去除相互间的依赖,然后组员就能尽量将精力集中在个人的模块,提高开发效率。试想一下,当你坐下来开始今天的开发任务时,拉取别人的代码就花费了半天时间,内心一阵骂娘后,编程的心情恐怕就飞了。

CTMediator 是由天猫架构师 CasaTaloyum 提出的解决方案。个人实验后,感觉实现思路十分清晰,操作性非常强。下面就他的实现思想进行一下解读,方便后来者在操作中能够抓住思考主线,减少不必要的折腾。

组件化的出发点就是解耦模块,比如在使用 App 模块 A 时,要求必须先登录,这个时候就会调用登录模块 L 。这种场景下,A 模块就依赖了 L 模块。两个模块之间有时还需要传递参数 params 。那么如何解耦呢?通过中间件 CTMediator 来实现。CTMediator 并不是简简单单的将 A / L 联系起来,而是规定了 A 模块和 L 模块间实现通信的规则。如果将 A 和 L 比作两个需要做买卖的 Boss,通常的理解是两者找个跑腿的小弟 C 去传话。这样做由于 C 低下的地位会导致 A 和 L 按照自己的喜好发布命令,C 就很难让二者做一锤子买卖。怎么办呢?提高 C 的地位,让 C 成为大 Boss ,自己独自确定 A 和 L 买卖的方式。

CTMediator 就是这种实现方式。里面定义好了要进行通信模块的命名规则和实现规则。然后 A 和 L 模块都必须按照这种方式来实现,如果没有实现,CTMediator 中定义了默认处理方式。而且 CTMediator 更进一步,派出了小弟去需要通信的模块去办事。这样 A 模块和 L 模块只要依赖 CTMediator 派往自己的小弟,不同的小弟依赖 CTMediator 就可以了。可以用下图表示:

CTMediator

通过 Cocoapod 实现就是 「ModuleA」、「ACategory」、「ModuleB」、「BCategory」都是一个独立的工程,相互之间通过私有库的方式建立联系。CTMediator 已经贴心地将一些 podspec 文件的制作携程了 shell 脚本,在 Mac 平台下能够快速完成。

思想是实践的指引,有了整体的认识,下面操作起来就会得心应手,快快试试吧:在现有工程中实施基于CTMediator的组件化方案

喜欢和关注都是对我的鼓励和支持~

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容