美文网首页
CTMediator路由swift

CTMediator路由swift

作者: 咚咚嗒大人 | 来源:发表于2020-03-12 14:32 被阅读0次

接着上篇组件化的demo,在demo中借助CTMediator实现各个功能块间的调用

路由?组件化?

组件化是将APP按照业务模块划分成几个主要的组件,理想的组件化是一个单独工程,在没有任何交互的情况下可以独立运行。完全解耦的组件和组件之间要进行交互而且不能耦合,需要借助路由(中间件)来完成组件和组件的信息交换操作。

路由起到了调度中心的作用,这种设计模式也被称为 中介者模式

路由就是把URL映射到响应的类或者controller。首先要为其添加一个配置表,该配置表定义了URL的规则和映射的目标。

URL格式

scheme://host:port/path

scheme表示使用什么协议;

host表示主机标识

path表示文件所在路径与文件本身是什么。

CTMediator路由方案:

CTMediator.h源码

Pasted Graphic 7.png

CTMediator本地调用的使用:

1、在组件当中创建一个Target_xxx格式的中间类

Pasted Graphic 1.png

2、类中定义Action_XXXX格式的方法,方法中实现组件的实例化,传参等。

Pasted Graphic 13.png

3、在主项目或者基础组件中增加一个CTMediator的扩展(OC分类),在里面去关联上面提到的中间类,以字符串的形式传递类名和方法名,再通过调用CTMediator中的performTarget方法实现函数调用

Pasted Graphic.png

4、主工程中获取CTMediator的extension返回类

Pasted Graphic 15.png

注意的一下几点:

1、中间类命名格式为Target_xxx;

2、中间类方法名命名格式为Action_xxxx;

3、中间类切记添加@objc、CTMediator的扩展要加public修饰;

4、调用CTMediator扩展extension(OC建立category) ;

self.performTarget(“xxx”, action: “xxxx”, params: params, shouldCacheTarget: false)

5、中间件是swift类型时必须添加 kCTMediatorParamsKeySwiftTargetModuleName 参数,value为中间类所在的组件名称,中间类是oc类型不加;

6、CTMediator单利与中间件class类型不一致时,swift类中callback回调需要swift闭包与oc对象转换;

7、如果CTMediator扩展写在基础件中,因为只运行了当前组件,所以无法进行组件间调整;

待解决问题?

1、子模块中oc如果调用swift? 子模块-Swift.h 加不进去

相关文章

网友评论

      本文标题:CTMediator路由swift

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