KXModuleOrz
概述
KXModuleOrz 是组件化架构设计的管理统称。orz 代表为组件module提供服务的意思
-
KXModuleManager 管理
module的活性active,trigger各种自定义事件eventactive需要指定moduleClass,YES代表着激活moduleClass文件,响应event,NO反之event可以自定义,后期可拓展为更多的subeventmodule lifecycle eventmodule生命周期相关的子类型(init, setup, start, end, dispose)application lifecycle eventapplication生命周期子类型(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/unregistAnswer与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 整体内容借鉴 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.