基于业务逻辑,多个 APP 会调用同一模块,例如预约挂号、医社保查询等,组件化能够更好的实现跨App的代码和功能的复用, 能够更好的共享资源,避免重复造轮子。
而组件化将来必定会出现有多个模块,模块之间会通信,互相调用的情况。

如何避免相互依赖,实现模块组件独立开发与维护?

各个模块直接都不需要再互相依赖,而是仅需要依赖 Mediator 层即可。但是,依赖关系并没有解除,Mediator 依赖了所有模块,而调用者又依赖 Mediator。

组件仅通过Target-Action暴露可调用接口
iOS基于runtime,Android基于发射机制实现动态调用

Mediator : 封装动态调用的实现逻辑,也相当于一个基础组件。而各个业务组件,不需要知道Mediator的存在。只有在集成的时候才需要Mediator,实际上这可以只是一个类文件。
对于使用URL方式其他第三方APP调用组件的,也可以经过URL参数转换之后,使用本地APP调用组件的方式。
- 组件化方案中的去model设计
调用方如何知道接收方需要哪些key的参数?调用方如何知道有哪些target可以被调用?
每个组件,重载Mediator,封装好对外提供的接口。(Objective-C 的分类,Java 的继承)
- 动态调度考虑
切点:
以url parse为切点
以实例化target时为切点
以category调度方法为切点
以target下的action为切点
从服务端获取target-action配置列表,审查时检查当前action是否存在要被动态调度跳转的action,如果存在,则跳转到新的target-action
网友评论