我们公司养老业务线使用的组件化方案是CTMediator,而我在此之前没有了解过相关方案,借此机会学习CTMediator以及相关解耦措施。

组件与模块

“组件”强调的是复用,它被各个模块或组件直接依赖,是基础设施,它一般不包含业务或者包含弱业务,属于纵向分层(比如网络请求组件、图片下载组件)。

“模块”强调的是封装,它更多的是指功能独立的业务模块,属于横向分层(比如购物车模块、个人中心模块)。

模块化需要提供多个库之间的服务调用并保持库与库之间的独立、非强依赖。

总的来说,模块化的重点还是如何去除多个模块之间的耦合,让每个模块在不强依赖的情况下可以调用其他模块的服务。现在在开源的方案中有以下三种方案被广泛使用。

  • 利用URL—Scheme注册
  • 利用Protocol-Class注册
  • 利用Runtime实现的Target-Action方法

并各自有比较成熟的第三方库可供使用。

如 URL—Scheme 库:

  • JLRoutes
  • routable-ios
  • HHRouter
  • MGJRouter

Target-Action 库:

  • CTMediator

参考资料


 评论