KXModuleOrz 0.0.1

KXModuleOrz 0.0.1

XiangqiTu 维护。



  • XiangqiTu

KXModuleOrz

概述

KXModuleOrz 是组件化架构设计的管理总称。"orz" 代表为组件 `module` 提供服务的意思

  • KXModuleManager 管理 `module` 的活性 `active `,以及触发各种自定义事件 `event`

    • `active` 需要指定 `moduleClass`,`YES` 代表激活 `moduleClass` 文件,响应 `event`,`NO` 反之
    • `event` 可以自定义,后期可拓展为更多的 `subevent`
      • `module lifecycle event` 模块生命周期相关的子类型(初始化、设置、开始、结束、销毁)
      • `application lifecycle event` 应用生命周期子类型(完成启动、活动状态退出、进入后台)
      • `section event` 业务事件子类型(登录、登出、连接成功、连接失败)
      • `custom event` 自定义
    • `KXModuleProtocol` 新建的 `module` 对象需要继承此协议
      • `KXModuleOrz_Auto_Regist()` 宏自动注册并实现 `@required` 相关
      • `modulePriority` 若未设置权重,默认为 `KXModulePriorityLow `
      • `- (void)moduleCatchEvent:(KXModuleEvent)event` 响应各种 `event`
    • 线程不安全,请在 `主线程` 操作。后期会考虑加入线程安全

  • KXModuleQAService 不同 `module` 之间以 QA 形式 单向 通信,初衷就是为了 Module 之间的解耦。

    • 举例:
      ModuleA 需要用到 ModuleB,A 向 B 提出问题集合 `B_Question`,A 不关心 B 如何解答问题,A 只关心 `B_Question` 如何描述清楚(方法名、返回值、各个参数)。B 回答问题,需要生成一个 `B_Answer` 文件,B_Answer 文件作为一个新的 `module`,需要被 `KXModuleManager` 管理,灵活使用,B_Answer 全心全意为 `B_Question` 服务。

    • `regist/unregist` `Answer` 与 `Question` 一对一映射,不支持一对多,多对多。(初衷就是为了 Module 之间的解耦)

    • `Question` 问题的描述集合,可以由多个业务模块共同提出。A、C、D 模块,对 B 模块提出了各种各样的问题,集合在 `B_Question` 中。orz_ask 可在具体业务模块中直接快速提问并得到 问题反馈,进行后续逻辑。

    • `Answer` 作为新且小的 `module` 需要实现 `KXModuleProtocol`、`B_Question` 两个协议。Answer 只对接 `Question` 相关实现逻辑。`__ORZ_ANSWER__` 可用于实现 `B_Question` 具体问题解答后标注(已回答)

    • 线程不安全,请在 `主线程` 操作。后期会考虑加入线程安全

  • `Question` 的描述文件建议单独存放在一个 Pod 中

特点

KXModuleOrz 整体内容借鉴 BeeHiveCTMediator。集两家之所长,避其短。短小精悍,易于上手。

  • KXModuleManager:模块生命周期 + 触发 Event 机制,`modulePriority` 优先级

  • KXModuleQAService:以 QA 形式业务解耦,简单易懂

  • 全程无硬编码 HardCode

  • QA框架支持Question高度自由自定义,参数返回值多样化

  • 新建module对象,原有业务模块代码 无污染

  • 注册机制 可插拔

弊端

  • 注册机制,需要维护注册表

  • 注册过程 +(void)load ,若使用不当,影响pre-main阶段运行

  • 不允许sharedInstance 单例 / 全局 对象实现module Protocol,需要新建Module

  • Question 只支持 ClassMethod +(),不支持 InstanceMethod -()

  • 版本 未正式发布,存在未发现的bug隐患

安装

KXModuleOrz 通过 CocoaPods 提供使用。要安装它,请在 Podfile 中添加以下行

pod 'KXModuleOrz'

作者

XiangqiTu, [email protected]

许可

KXModuleOrz 使用 MIT 许可。有关更多信息,请参阅 LICENSE 文件。