powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / Java [игнор отключен] [закрыт для гостей] / Dependency inversion
25 сообщений из 64, страница 1 из 3
Dependency inversion
    #39827324
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что-то не могу понять этот принцип. Информация, которую я читал, выглядит противоречивой.

Вот оригинал:

https://en.wikipedia.org/wiki/Dependency_inversion_principle High-level modules should not depend on low-level modules. Both should depend on abstractions (e.g. interfaces).
Abstractions should not depend on details. Details (concrete implementations) should depend on abstractions.

1. Какой определить у какого модуля/класса выше уровень?
2. Могут ли зависеть низкоуровые модули от высокоуровневых?
...
Рейтинг: 0 / 0
Dependency inversion
    #39827334
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
зависимость должна быть в одну сторону. т.е. если на пальцах твой репозиторий не должен знать ничего о контроллере и сервисах. твой сервис ничего не должен знать о контроллере, твой контроллер в идеальном мире ничего не должен знать о тех обоих. вроде так мартин вещал. если речь об аббревиатуре солид.
...
Рейтинг: 0 / 0
Dependency inversion
    #39827353
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreykaTзависимость должна быть в одну сторону. т.е. если на пальцах твой репозиторий не должен знать ничего о контроллере и сервисах. твой сервис ничего не должен знать о контроллере, твой контроллер в идеальном мире ничего не должен знать о тех обоих. вроде так мартин вещал. если речь об аббревиатуре солид.

Речь про SOLID

Это отвечаете на какой вопрос?
...
Рейтинг: 0 / 0
Dependency inversion
    #39827420
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1) где верх где низ - это зависит от твоей архитектуры и что ты там пишешь я хз. главное что вызовы из одного слоя должны ходить только в другой и никак не наоборот. если вдруг тебе понадобилось в другую сторону - ты делаешь что-то не так.
2) тут идея в том, что объясняя на пальцах, если у тебя какая-нибудь классика контроллер-сервис-репозиторий это подразумевается, что из репозиторя ты не должен обращаться к сервису, или контроллеру. только так: контроллер -> сервис -> репозиторий.
...
Рейтинг: 0 / 0
Dependency inversion
    #39827482
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreykaT1) где верх где низ - это зависит от твоей архитектуры и что ты там пишешь я хз. главное что вызовы из одного слоя должны ходить только в другой и никак не наоборот. если вдруг тебе понадобилось в другую сторону - ты делаешь что-то не так.
2) тут идея в том, что объясняя на пальцах, если у тебя какая-нибудь классика контроллер-сервис-репозиторий это подразумевается, что из репозиторя ты не должен обращаться к сервису, или контроллеру. только так: контроллер -> сервис -> репозиторий.

Это я и так всё знаю, но это не выглядит соответсвующе формулировке. Вчитайтесь


авторHigh-level modules should not depend on low-level modules. Both should depend on abstractions (e.g. interfaces).

Abstractions should not depend on details. Details (concrete implementations) should depend on abstractions.


1. Какой определить у какого модуля/класса выше уровень?
2. Могут ли зависеть низкоуровые модули от высокоуровневых?

контроллер выше сервиса?
...
Рейтинг: 0 / 0
Dependency inversion
    #39827485
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Точка входа это верхний уровень - что тебе еще не понятно? Читай книжку Мартина "чистая архитектура" Там несколько глав посвящены солиду (который тоже Мартин собрал)
...
Рейтинг: 0 / 0
Dependency inversion
    #39827741
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreykaT,

Да дело не в чтении, а в понимании.

В случае спринга точка входа запроса это контроллер.

То есть контроллер это верхняя точка, сервис на уровень ниже, репозиторий ещё ниже.


теперь берём фразу
авторHigh-level modules should not depend on low-level modules. Both should depend on abstractions (e.g. interfaces).

Почему она написана именно так?

Если как Вы говорите, то надо писать:
автор low-level modules should not depend High-level modules.
...
Рейтинг: 0 / 0
Dependency inversion
    #39827773
Kachalov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerберём фразу
авторHigh-level modules should not depend on low-level modules. Both should depend on abstractions (e.g. interfaces).

Почему она написана именно так?
- вероятно потому, что здесь смысл заключен во втором предложении, про абстрации, что бы не писали:
Код: java
1.
2.
@Autowired
private MyServiceImpl service;


а писали:
Код: java
1.
2.
@Autowired
private MyService service;
...
Рейтинг: 0 / 0
Dependency inversion
    #39827775
Фотография fixxer
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И контроллер и репозиторий это все модули низкого уровня, потому что содержат детали реализации. Модули высокого уровня это доменная модель и бизнес логика. Естественно в правиле DI речь идет о зависимости времени компиляции, естественно зависимость времени исполнения зачастую направлена в обратную сторону. Отсюда и слово Inversion.
...
Рейтинг: 0 / 0
Dependency inversion
    #39827810
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
инверсия с английского вообще переводится как гомосексуализм
...
Рейтинг: 0 / 0
Dependency inversion
    #39827820
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Kachalovquestionerберём фразу
пропущено...


Почему она написана именно так?
- вероятно потому, что здесь смысл заключен во втором предложении, про абстрации, что бы не писали:
Код: java
1.
2.
@Autowired
private MyServiceImpl service;


а писали:
Код: java
1.
2.
@Autowired
private MyService service;




а в первую фразу для красоты написали?
...
Рейтинг: 0 / 0
Dependency inversion
    #39827821
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreykaTинверсия с английского вообще переводится как гомосексуализм

очень познавательно. А главное очень относится к теме.
...
Рейтинг: 0 / 0
Dependency inversion
    #39827825
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да. гомосексуальная зависимость. всё верно. блин. ну посмотри ж ты книжку того чела который собрал эти принципы а. там немного страниц и всё объяснено картинками тем челом кто эту диай и сформулировал как бестпрактиз
...
Рейтинг: 0 / 0
Dependency inversion
    #39827883
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreykaTда. гомосексуальная зависимость. всё верно. блин. ну посмотри ж ты книжку того чела который собрал эти принципы а. там немного страниц и всё объяснено картинками тем челом кто эту диай и сформулировал как бестпрактиз

Судя по тому, что ты прочитал, а объяснить не можешь эта книжка тебе не помогла.
...
Рейтинг: 0 / 0
Dependency inversion
    #39827893
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да. ментор из меня так себе. особенно когда слушатели деревянные. согласен.
...
Рейтинг: 0 / 0
Dependency inversion
    #39827894
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andreykaT, очень хотел что-то процитировать из Омара-Хайама на тему мудрецов и... ну и всех остальных. Но забыл.
...
Рейтинг: 0 / 0
Dependency inversion
    #39829770
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Нужели никто не может ответить?
...
Рейтинг: 0 / 0
Dependency inversion
    #39829782
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я вчера перечитал книжку мартина на эту тему.. ))
в общем, он там всё же топит за интерфейсы. типа зависимости между компонентами делаешь через интерфейсы а не напрямую с реализациями.
...
Рейтинг: 0 / 0
Dependency inversion
    #39829783
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Dependency inversion
    #39829785
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторОбратите внимание, что поток управления пересекает извилистую линию в направлении, обратном направлению зависимостей в исходном коде. Зависимости следуют в направлении, противоположном направлению потока управления — именно поэтому принцип получил название принципа инверсии зависимости
...
Рейтинг: 0 / 0
Dependency inversion
    #39829797
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Новичку проще понять эту тему если представить что между модулями стоит сеть.
...
Рейтинг: 0 / 0
Dependency inversion
    #39829877
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
andreykaTавторОбратите внимание, что поток управления пересекает извилистую линию в направлении, обратном направлению зависимостей в исходном коде. Зависимости следуют в направлении, противоположном направлению потока управления — именно поэтому принцип получил название принципа инверсии зависимости

Как это всё соотносится с фразой:

авторHigh-level modules should not depend on low-level modules.
...
Рейтинг: 0 / 0
Dependency inversion
    #39829878
questioner
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
maytonНовичку проще понять эту тему если представить что между модулями стоит сеть.

Новичком меня тяжело назвать)
...
Рейтинг: 0 / 0
Dependency inversion
    #39829900
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionermaytonНовичку проще понять эту тему если представить что между модулями стоит сеть.

Новичком меня тяжело назвать)

Извини если обидел.
...
Рейтинг: 0 / 0
Dependency inversion
    #39829933
andreykaT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
questionerandreykaTпропущено...


Как это всё соотносится с фразой:

авторHigh-level modules should not depend on low-level modules.
пока не вижу явной связи. по крайней мере в первоисточнике того кто этот принцип обосновал и в явном виде. что там в википедии хотели сказать хз. НО эта фраза есть в утверждениях к другим буквам солида.
...
Рейтинг: 0 / 0
25 сообщений из 64, страница 1 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / Dependency inversion
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]