oop - 在这种情况下,依赖倒置如何工作?
问题描述
早上好,
我一直在阅读 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());
}
}
是的,我们为所有插件定义了一个接口,但是我们不能在没有依赖它们的情况下推送它们,对吧?
那么在这种情况下如何应用依赖倒置原则呢?如何使用没有依赖关系的插件?
解决方案
相反,如果导入它们,请在其他地方构造插件并将它们注入 A 的构造函数
class A {
private plugins: Plugin[] = [];
construct(pluginsToUse) {
plugins = pluginsToUse;
}
}
推荐阅读
- excel - 当我向 Excel 表添加新行时,它会更改我以前的单元格公式的范围
- c - 如何将文件中的数字相加?
- excel - 通过 Excel VBA 在 Excel 记录集中插入一行
- twig - 如果没有提供参数,Twig 的“默认”过滤器会做什么?
- amazon-dynamodb - 查询日期范围,当日期是唯一键时
- javascript - 使用 webpack 将所有语言环境捆绑为一个
- r - 如何在 R 中的单个图中使用多种颜色?
- python - Python Tic-Tac-Toe Spot 已被占用
- docker - 是否可以限制每个 docker 映像的最大容器数?
- javascript - JQuery 在移动设备上不起作用 - 下拉和加载功能