Принцип инверсии зависимостей. Абстракция и реализация на одном уровне или же абстракция с его собственным модулем?

В книге "Внедрение зависимостей на платформе .NET", пишут:

принцип инверсии зависимостей диктует обязательное распространение абстракций с их собственными модулями

В других книгах (например "Чистая архитектура") и статьях об этом ничего не упоминается, а лишь пишут, что более низкие уровни могут использовать абстракции уровней выше.

А теперь пример:

У меня есть абстракция сервиса и его реализация на одном сервисном уровне (или его называют уровень приложения). И эта абстракция используется на уровне пользовательского интерфейса (UI). Если судить правилу, которое написано в книге "Внедрение зависимостей на платформе .NET", то это считается ошибкой, ведь, абстракция используется в UI и значит находится она должна там же (я знаю, что теперь сервисный уровень будет зависеть от UI, но сейчас не об этом). Но в чем проблема, что абстракция и реализация лежат на одном уровне? Мы же следуем правилу, что более низкие уровни должны зависеть от уровней выше, и просто на уровне UI используем абстракцию, которая лежит на одном уровне с реализацией.


Ответы (0 шт):