Доброе утро,
Я читал книгу Роберта Мартина об архитектуре программного обеспечения и, в частности, принципах 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());
}
}
Да, мы определили интерфейс для всех плагинов, но мы не можем выдвинуть их без зависимости от них, верно?
Так как же применить принцип инверсии зависимости в этом случае?
Как использовать плагины без зависимостей?