组件化(一) CTMediator
- 设计模式:中介(Mediator)模式 + Target-Action模式
- 流程简述:[CTMediator shareInstance] --> openUrl --> parseUrl --> performTarget:action:params --> runtime --> 分配到各个业务(target)下的各个业务逻辑(action)
- 调用:分为远程调用和本地调用。通过本地调用来支持远程调用,蘑菇街是所有的组件化调用都建立在URL上,这也是蘑菇街与CTMediator最大的不同。
- 本地调用:[[CTMediator sharedInstance] performTarget:targetName action:actionName params:@{...}]
- 远程调用:[[CTMediator sharedInstance] openUrl:url]
- 本地调用支持远程调用的最大原因:对于非常规参数(UIImage/UIView等等)openUrl方式是没办法直接传递的,而本地调用(performTarget:action:params)可以直接通过params传参。其次:远程调用会比本地调用多一步解析url,如果本地调用和远程调用无响应不应该是同类型
- 细节优化:notFound方法的统一处理可以再细化分