美文网首页
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