原文地址:html
https://casatwy.com/iOS-Modulization.html安全
下面是对做者的思想的一些总结,不表明咱们本身的组件化也要这么作(或者这么作,或者不这么作),咱们本身的组件化还须要在实践中不断完善,这里先理解清楚做者的意图。架构
远程调用和本地调用分开
远程调用就是app外部调用app的某个模块
本地调用就是app内部模块间的相互调用app
理由是:组件化
- 远程App调用处理入参的过程比本地多了一个URL解析的过程,这是远程App调用特有的过程
- 对于无响应请求的处理方式:远程和本地可能不同,因此要分开。若是都采用一样的方式,对于本地调用无响应的结果,极可能产品经理会不一样意展现一个404页面,而致使架构改变,而加班。
不使用URL注册,使用runtime机制便可,不维护注册列表
使用openURL的方式实现组件化是错误的
理由是:openURL的方式没法传递很是规参数。url
组件化方案中的去model设计
参数最好以字典的方式去传递
实现方式:设计
- CTMediator 提供转发的基础服务
- CTMediator+CTMediatorModuleAActions 提供和模块A有关系的全部调起
- Target_A提供具体要执行方法
- 调用模块依赖被调用模块的Category,例如想要调起A模块的页面,要依赖CTMediator+CTMediatorModuleAActions。
- category中定义的具体方法,限制了传参,能够保证只有知足正确的参数,才能够被执行。
一些安全措施
如何防止别人经过url调用本地页面:远程调用和本地调用分开后,这个问题就好解决了,采用给action添加native前缀去作的,凡是带有native前缀的就都只容许本地组件调用。htm