依赖倒置

一、依赖倒置的场景需求:函数

1) 模块A、B互相依赖,耦合较大,但愿改为单向依赖module

2)模块A是底层,模块B是上层,底层不该该调用上层,即只容许B调用A。call

 

二、未倒置前,A调用B:
module_a_func
  调用module_b_func(in_data, out_data)di

module_b:
  提供module_b_funcdata

 

三、倒置后,B调用A:底层

module_a:
提供func_register(int modid, int (*proc)func(indata_t in, outdata_t out));
module_a_func:
  //call register funcgis

module_b:
  提供module_b_func
在模块B或其余初始化注册函数:
func_register(b, module_b_func)注册

 

四、更进一步,模块C也调用func_register注册一个函数,模块A分别调用B/C注册的函数,这就是所谓的观察者模式了

module_c:  提供module_c_func在模块C或其余初始化注册函数:func_register(c, module_c_func)

相关文章
相关标签/搜索