在这种情况下,依赖倒置如何工作?

时间:2019-05-02 05:33:55

标签: oop architecture

早上好

我一直在读罗伯特·马丁(Robert Martin)的书,特别是关于软件体系结构和SOLID原理的书,而我不知道依赖反转如何工作。

简单的例子,是的,它们很清楚,就像https://www.oodesign.com/dependency-inversion-principle.html

但是,当我们拥有一个插件系统时,父母必须知道所有插件并加载它们,那么该如何避免父母对其插件的依赖呢?

示例:


/*
// In plugins file below
class PluginA { }
class PluginB { }
*/

import { PluginA, PluginB } from '../plugins';

class A {

  private plugins: Plugin[] = [];

  construct() {
    plugins.push(new PluginA(), new PluginB());
  }

}

是的,我们为所有插件定义了一个接口,但是如果没有它们的依赖我们就不能推送它们,对吧?

那么在这种情况下如何应用依赖倒置原则? 如何使用无依赖性的插件?

1 个答案:

答案 0 :(得分:0)

相反,如果要导入它们,请在其他位置构造插件并将其注入A的构造器中

class A {

  private plugins: Plugin[] = [];

  construct(pluginsToUse) {
    plugins = pluginsToUse;
  }

}