早上好
我一直在读罗伯特·马丁(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());
}
}
是的,我们为所有插件定义了一个接口,但是如果没有它们的依赖我们就不能推送它们,对吧?
那么在这种情况下如何应用依赖倒置原则? 如何使用无依赖性的插件?
答案 0 :(得分:0)
相反,如果要导入它们,请在其他位置构造插件并将其注入A的构造器中
class A {
private plugins: Plugin[] = [];
construct(pluginsToUse) {
plugins = pluginsToUse;
}
}