我们公司养老业务线使用的组件化方案是 CTMediator ,而我在此之前没有了解过相关方案,借此机会学习 CTMediator 以及相关解耦措施。
组件与模块
“组件”强调的是复用,它被各个模块或组件直接依赖,是基础设施,它一般不包含业务或者包含弱业务,属于纵向分层(比如网络请求组件、图片下载组件)。
“模块”强调的是封装,它更多的是指功能独立的业务模块,属于横向分层(比如购物车模块、个人中心模块)。
模块化需要提供多个库之间的服务调用并保持库与库之间的独立、非强依赖。
总的来说,模块化的重点还是如何去除多个模块之间的耦合,让每个模块在不强依赖的情况下可以调用其他模块的服务。现在在开源的方案中有以下三种方案被广泛使用。
- 利用
URL—Scheme
注册 - 利用
Protocol-Class
注册 - 利用 Runtime 实现的
Target-Action
方法
并各自有比较成熟的第三方库可供使用。
- JLRoutes
- routable-ios
- HHRouter
- MGJRouter
- CTMediator