美文网首页
组件化方案对比

组件化方案对比

作者: 新生代农民工No1 | 来源:发表于2022-01-19 00:16 被阅读0次

目前iOS组件化方案主要有三种;

  • URL Scheme
  • Protocol Class
  • Target Action

URL Scheme 方案

实现方式:

在启动时,注册组件提供的服务(注册URL以及关联服务Block),然后在使用时,通过URL直接调用(openURL);

  • 使用URL处理本地跳转逻辑
  • 注册组件,内存中维护URL注册服务
优点:
  • 统一了不同平台的客户端在跳转上的不一致
  • 处理网页跳转上较为方便
缺点:
  • url参数受限(例如非字符串类型,UIImage,XXModel,NSData等)
  • 业务分散,耦合多
  • 组件很多的情况下,可能会影响到内存

Protocol Class方案

实现方式:

通过Protocol定义服务接口,组件通过实现该接口来提供服务,最终的实现就是将Protocol和Class映射在一起,同时在内存中保存一张映射表,使用的时候,通过Protocol去获取Class对应的服务。

  • 增加 Protocol Wrapper(包装) 层
  • 中间件返回 Protocol 对应的 Class
  • 解决硬编码的问题
优点:
  • 协议接口规范,遵循依赖反转原则
缺点:
  • 缺少统一调度层,组件方法调用分散,难于集中管理(团队规模大,架构管控越重要)
  • 架构的灵活性不够高

Target Action方案

实现方式:

Target Action这个方案是基于ObjCruntimecategory 特性动态获取模块,例如通过NSClassFromString 获取类并创建实例,通过 performSelector + NSInvocation动态调用方法。

首先每个模块需要配置Target和Category,其中Target是每个组件对应一个或者多个Target,Category是中间层Mediator的分类,使用分类的目的是为了让Mediator的业务代码分离,从而降低Mediator中的依赖和耦合性。
那么中间层Mediator是如何找到并调用组件的呢?这里正是利用了runtime的反射机制,在Category中找到对应Target以及调用Target对应的Action。

CTMediator正是采用的Target Action方案,巧妙的使用了cocoaTouch提供的反射机制,方法签名与命令模式,简单又完美的解决了组件间的解耦问题。

  • 抽离业务层逻辑
  • 提供由中间层调用逻辑
  • 中间层实现上使用Runtime反射
优点:
  • 解耦,只存在组件依赖中间层(单向依赖)
  • 利用 Category 可以明确声明的接口,进行编译检查
  • 统一处理了所有组件间调用入口,方便管理
缺点:
  • 每个组件的Category对应一个Target,Category中的Action对应Target中的Action。(此类的代码量很多)
  • 有硬编码的问题,各种定义的string

相关文章

  • 组件化方案对比

    目前iOS组件化方案主要有三种; URL Scheme Protocol Class Target Action ...

  • iOS组件化方案对比

    背景 随着公司业务的不断发展,项目的功能越来越复杂,各个业务代码耦合也越来越多,代码量也是急剧增加,传统的`MVC...

  • Android 组件化方案对比

    为什么要组件化 在项目中,主要按包进行业务逻辑划分,并不存在模块组件的概念,各业务模块存在直接回调(如图2所示),...

  • iOS组件化方案

    iOS组件化方案 iOS组件化方案

  • 组件化改造-从零开始

    1 ,抽分基础资源 2 ,基础库的设计 3 ,组件接口 4 ,组件拆分 5 ,路由设计 对比了几家组件化方案,还是...

  • iOS 组件化方案探索

    组件化方案相关链接: 一、Limboy的组件化方案: 原文1 原文2二、Casa的组件化方案: 原文

  • 组件化方案

    组件化方案引用 在现有工程中实施基于CTMediator的组件化方案 iOS组件化实践(一):简介 iOS组件化实...

  • iOS组件化方案的对比

    为什么需要组件化 随着公司业务的不断发展,项目的功能越来越复杂,各个业务代码耦合也越来越多,代码量也是急剧增加,传...

  • 组件化的几个方案对比

    组件化(一) CTMediator 设计模式:中介(Mediator)模式 + Target-Action模式 ...

  • iOS组件化文章汇总

    iOS应用架构谈 组件化方案 APP组件化之路 我所理解的组件化之路 iOS 组件化方案探索 围观神仙打架,反革命...

网友评论

      本文标题:组件化方案对比

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