在组件化中,我们的模块或多或少都需要调用外部的服务,也有可能外部需要调用本模块的服务,因此就衍生出了两种概念,这里是本人对这两种概念的一些解读和使用方式推荐。
Provider
:即你需要对外提供的功能,它的接口定义在最底层的模块中,在本模块去实现该接口Delegate
:即你需要外部提供给你的功能,在本模块中定义该接口,在顶层模块实现该接口
举例子:Provider
是通用的,方便别人调用自己的(无论是谁),属于是共用能力,把接口定义在最底层模块,谁都可以访问到,Delegate
是特殊的私有的,本模块自己需要才去定义,也只需要本模块去调用即可。
前者比如:有一个单独的用户信息存储模块,UserInfo定义在最底层,存储在该模块,别的模块与用户信息存储模块无依赖关系能访问到UserInfo,则其他模块需要用户信息的时候,应该通过Provider
方式实现,在最底层(至少于UserInfo同级)去定义,然后再用户信息存储模块去实现,别的模块去调用。
后者比如:本模块需要获取别的模块的某个功能,本模块与该模块无依赖关系,可能都不在同一个仓库,不适合使用Provider
的方式,他就定义一个Delegate
接口,在顶层模块实现即可,本模块就调用该接口获取对应功能。