组件化方案对比

2022-01-19  本文已影响0人  新生代农民工No1

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

URL Scheme 方案

实现方式:

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

优点:
缺点:

Protocol Class方案

实现方式:

通过Protocol定义服务接口,组件通过实现该接口来提供服务,最终的实现就是将Protocol和Class映射在一起,同时在内存中保存一张映射表,使用的时候,通过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提供的反射机制,方法签名与命令模式,简单又完美的解决了组件间的解耦问题。

优点:
缺点:
上一篇 下一篇

猜你喜欢

热点阅读