苹果开发中文网站组件化方案调研( 七 )

Classcls=NSClassFromString(@"B_VC");

NSObject*target=[[clsalloc]init];

[targetperformSelector:NSSelectorFromString(@"action_B:para2:")withObject:para1withObject:para2];

}

@end组件B调用组件A , 如下所示:

[[MediatorsharedInstance]A_VC_Action:@"参数1"];组件A调用组件B , 如下所示:

[[MediatorsharedInstance]B_VC_Action:@"参数1"para2:123];此时已经可以做到最后一张图所示的效果了 , 组件A,B依赖mediator , mediator不依赖组件A,B(也不是完全不依赖 , 而是把用runtime特性把类的引用弱化为了字符串)

反思

看到这里 , 大概有人会问 , 既然用runtime就可以解耦取消依赖 , 那还要Mediator做什么?我直接在每个组件里面用runtime调用其他组件不就完了吗 , 干嘛还要多一个mediator?

但是这样做会存在如下问题:

调用者写起来很恶心 , 代码提示都没有 , 参数传递非常恶心 , 每次调用者都要查看文档搞清楚每个参数的key是什么 , 然后自己去组装成一个NSDictionary 。 维护这个文档和每次都要组装参数字典很麻烦 。

当调用的组件不存在的时候 , 没法进行统一处理


推荐阅读