随着业务不断扩充,原先的单一业务结构已经无法支撑起庞大的业务。此外,因为业务复杂,如果还是单一的结构,那么耦合度非常高,维护成本越来越大。所以出现了组件,所谓的组件,我觉得定义成模块功能更合适点。
组件分类
主要分为两大类:
- 基础组件
- 业务组件
其中基础组件里面包含网络库,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)