Pull to refresh
1
0
Сергей@perepiskass

User

Send message

Прочитал статью и не понял смысл, после прочтения "Чистая архитектура" все понятно, а тут явно создаётся ощущение что автор немного перепутал. В книге Мартина часто приводиться аналогия с луковицей, и основной посыл, что уровень который расположен ближе к центру ничего не должен знать о уровне который расположен ближе к краю. Но в разработке часто бизнеса логика (уровни ближе к центру) должны взаимодействовать с выше стоящими уровнями. Допустим какая либо библиотека анализирует сигнал с датчика и при определенном событии должна оповестить об этом программу вызвавшию ее. Библиотека это бизнеса логика и она не должна знать ничего о вызвавшем его коде, для этого и используется инверсия зависимости. В библиотеке есть вызов метода интересного класса ( например класса "Инициатор") в котором есть метод "Получить". Когда мы хотим использовать эту библиотеку мы в контракте (в хэдере) видим что класс вызывающий ее должен быть наследован от абстрактного класса "Инициатор" и надо реализовать следующим образом метод "Получить". После всех проделок мы в вызывающем классе (верхнеуровневый код) при создании экземпляра класса бизнеса логики передаём в нее указатель на наш вызывающий класс как указатель на "Инициатор" и запускаем нужный метод.

Конечно пример притянут и проще использовать возврат из функции, но хотел донести суть - что в системе MVC (model, view, controller) уровень бизнеса логики (model) ничего не должен знать о вызывающем его коде. А то что описано в статье про верхнеуровневый и низкоуровневые модули это или путаница местами или ошибка.

Information

Rating
Does not participate
Registered
Activity

Specialization

Бэкенд разработчик, Системный инженер
Средний
Git
ООП
Python
Docker
CI/CD
Linux
C++
Bash