组件化

作者: 三千烦恼风_eefa | 来源:发表于2022-01-29 17:05 被阅读0次

如何组件化解耦

iOS应用架构谈 组件化方案

https://casatwy.com/iOS-Modulization.html

组件划分:

业务组件

历史架构:


image.png

改进后:

image.png

1、subspec方式也是一个弱解耦比较优雅的方式

2、模块和中间层之间相互依赖怎么破除?

组件化方案架构图:

image.png

思想:主要是基于Mediator模式和Target-Action模式,中间采用了runtime来完成调用;

调用方式:

先说本地应用调用,本地组件A在某处调用[[CTMediator sharedInstance] performTarget:targetName action:actionName params:@{...}]向CTMediator发起跨组件调用,CTMediator根据获得的target和action信息,通过objective-C的runtime转化生成target实例以及对应的action选择子,然后最终调用到目标业务提供的逻辑,完成需求。

在远程应用调用中,远程应用通过openURL的方式,由iOS系统根据info.plist里的scheme配置找到可以响应URL的应用(在当前我们讨论的上下文中,这就是你自己的应用),应用通过AppDelegate接收到URL之后,调用CTMediator的openUrl:方法将接收到的URL信息传入。当然,CTMediator也可以用openUrl:options:的方式顺便把随之而来的option也接收,这取决于你本地业务执行逻辑时的充要条件是否包含option数据。传入URL之后,CTMediator通过解析URL,将请求路由到对应的target和action,随后的过程就变成了上面说过的本地应用调用的过程了,最终完成响应。

针对请求的路由操作很少会采用本地文件记录路由表的方式,服务端经常处理这种业务,在服务端领域基本上都是通过正则表达式来做路由解析。App中做路由解析可以做得简单点,制定URL规范就也能完成,最简单的方式就是scheme://target/action这种,简单做个字符串处理就能把target和action信息从URL中提取出来了。

相关文章

网友评论

      本文标题:组件化

      本文链接:https://www.haomeiwen.com/subject/wwlczktx.html