组件间的通信

随着业务不断扩充,原先的单一业务结构已经无法支撑起庞大的业务。此外,因为业务复杂,如果还是单一的结构,那么耦合度非常高,维护成本越来越大。所以出现了组件,所谓的组件,我觉得定义成模块功能更合适点。

组件分类

主要分为两大类:

  • 基础组件
  • 业务组件
    其中基础组件里面包含网络库UI库...
    业务组件顾名思义就是每个业务分装成一个独立的模块

通信

越来越多的业务抽离成组件了,那么怎么做到组件间的通信呢?现在业内有比较多的方案,网上也有很多,我比较推荐的是 casatwy 的组件化方案。使用Category+Target-Action模式来构建Mediator,从而进行模块间的通信
具体原理,为什么这么实现就不啰嗦了,大家可以参考上面的文章,应该会让大家获益良多。

总结

下面我总结下上述方案的抽象过程

native调用
moduleA -> mediator+category(params) -> mediator(performTarget) -> moduleB (Action)
url远程调用(http|https, native scheme, other native scheme)
moduleA -> router -> mediator(performActionUrl) -> mediator(performTarget) -> moduleB(Action)  (native scheme)
moduleA -> router -> mediator+category(params) -> mediator(performTarget) -> moduleB(Action) (http|https)
moduleA -> router -> [[UIApplication sharedApplication] openURL:url] (other native scheme)

你可能感兴趣的:(组件间的通信)