现在已有的中间件思路主要是两类
1 根据oc语言的runtime机制特性,采用反射原理,获取target和action,使用performSelector方法进行各模块的通信

2 使用protocol策略

在中间件中创建MGJComponentProtocol文件,服务方组件将可以用来调用的方法都定义在Protocol中,将所有服务方的Protocol都分别定义到MGJComponentProtocol文件中,如果协议比较多也可以分开几个文件定义。这样所有调用方依然是只依赖中间件,不需要依赖除中间件之外的其他组件。
Protocol方案中每个组件也需要一个“接口类”,此类负责实现当前组件对应的协议方法,也就是对外提供服务的实现。在程序开始运行时将自身的Class注册到ModuleManager中,并将Protocol反射出字符串当做key。这个注册过程和MGJRouter是类似的,都需要提前注册服务。
网友评论