При прямом применении инверсии зависимостей абстракты принадлежат верхним / политическим уровням. Эта архитектура группирует компоненты более высокого уровня / политики и абстракции, определяющие более низкие службы, вместе в одном пакете. Уровни нижнего уровня создаются путем наследования / реализации этих абстрактных классов или интерфейсов.
В идеале, как также сказано в статье вики (в подходе 2 в разделе «Реализация»), модуль абстракции должен быть отдельным модулем для слабой связи,
Но у меня есть вопрос по подходу 1 с цитируемым заявлением. По моему опыту, везде, где 2 не реализованы / не возможны, я всегда видел, что классы абстракции упакованы с модулями низкого уровня вместо модуля высокого уровня.
Недостатком упаковки абстракции / интерфейсов с пакетами высокого уровня является то, что если есть 10 модулей высокого уровня, вызывающих данный модуль низкого уровня, то нам нужно упаковать интерфейсы во всех 10 модулях. Считайте, что мне нужно добавить один метод в интерфейс, мне нужно изменить все 10 модулей, чтобы добавить этот метод. Не правда ли? Итак, согласно моему пониманию, классы абстракции должны быть упакованы с модулями низкого уровня вместо модулей высокого уровня.
Поправьте меня Если я здесь не прав?