CocoaPods trunk is moving to be read-only. Read more on the blog, there are 4 months to go.

KXModuleOrz 0.0.1

KXModuleOrz 0.0.1

Maintained by XiangqiTu.



  • By
  • XiangqiTu

KXModuleOrz

概述

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

  • KXModuleManager 管理module的活性active , trigger各种自定义事件event

    • active 需要指定moduleClass, YES代表着激活moduleClass文件,响应eventNO反之
    • event 可以自定义,后期可拓展为更多的subevent
      • module lifecycle event module生命周期相关的子类型(init, setup, start, end, dispose)
      • application lifecycle event application生命周期子类型(FinishLaunching,ResignActive, EnterBackground)
      • 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 AnswerQuestion 一对一映射,不支持一对多,多对多。(初衷就是为了Module之间的解耦)

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

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

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

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

特点

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

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

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

  • 全程无硬编码HardCode

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

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

  • 注册机制 可插可拔

弊端

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

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

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

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

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

Installation

KXModuleOrz is available through CocoaPods. To install it, simply add the following line to your Podfile:

pod 'KXModuleOrz'

Author

XiangqiTu, [email protected]

License

KXModuleOrz is available under the MIT license. See the LICENSE file for more info.