Allay icon indicating copy to clipboard operation
Allay copied to clipboard

proposal: use DI container

Open johnbanq opened this issue 1 year ago • 0 comments

提案:使用依赖注入容器

为了提升核心的可扩展性,处理依赖与初始化问题,我们应该引入依赖注入容器(例如Guice)来帮我们对付这些问题。

好处

  • 可以简化插件之间的对象传递,减少耦合。例如插件A要提供一个对象作为API给插件B使用,依赖注入容器可以完成对象传递的工作,这比全局静态变量/自己实现ServiceProvider机制要干净。
  • 可以简化初始化,如果对象B需要使用对象A,依赖注入可以保证在B拿到A的时候A已经被初始化完毕了。
  • 可以简化发现和注册,只要向容器中提供实现特定接口的对象,核心就可以自动扫描对应实例,并将其拿来使用,而无需显式地注册

坏处

  • 提升debug难度,因为依赖注入容器在运行时进行装配,因为注册方式错误导致没法注册成功之类的问题会变得难以排查。

johnbanq avatar Mar 04 '23 20:03 johnbanq