Дмитрий Анисов - DDD на практике

  Рет қаралды 1,604

GoFunc

GoFunc

Күн бұрын

Пікірлер: 10
@Elijah-xe2he
@Elijah-xe2he 3 ай бұрын
Если я правильно понял, в представленной структуре слой application зависит от infrastructure. В луковой и подобным архитектурам как раз наоборот infrastructure должна зависеть от application. Полагаю, автор доклада изменил направление зависимости, чтобы было проще дергать инфру из application не плодя лишние интерфейсы? Тогда это неправильно называть луковой архитектурой.
@mtk6188
@mtk6188 3 ай бұрын
Нет, инфраструктура на то и инфраструктура, чтобы стоять особняком: в ней находятся детали реализации типа "как отправить емейл", или "как ходить в базу" и т.п. В аппликейшен лейере вы описываете конкретные бизнес юзкейсы, например, достать из репозитория объект, запустить на нем доменную логику, отправить емейл после и т.д.
@Elijah-xe2he
@Elijah-xe2he 3 ай бұрын
@@mtk6188 я понимаю, что размещается в инфре, что в app слое, что в доменке. Нарушать зависимости слоев неправильно, если хотите луковую/чистую/хексагональную архитектуру. Никто не запрещает из app слоя обращаться к репозиторию, на то и придуманы интерфейсы и IoC.
@alexandrfolomkin9380
@alexandrfolomkin9380 3 ай бұрын
Выносить интерфейсы в go в отдельный пакет - такое себе решение, сразу оказывается что интерфейс становится публичным, а значит может где-то использоватся - а это уже протекание абстракций. Интерфейсы должны объявляться в том же месте где и используются Использовать функцию init - это антипаттерн - неявное выполнение кода, тем более с if. Для настройки лучше использовать репозиторий с несколькими реализациями. application и service - граница какая-то вялая между ними Короче, питонист пришел в гошку и наводит шорох
@asdfsavs6846
@asdfsavs6846 3 ай бұрын
Вопрос по поводу интерфейсов. Допустим есть интерфейс репозитория. Репозиторий нужно использовать в нескольких местах (сервисах). Что вы предлагаете? Копи-пастить интерфейс в два места?
@maoshultz1731
@maoshultz1731 3 ай бұрын
Там где вы его реализуете
@Elijah-xe2he
@Elijah-xe2he 3 ай бұрын
Интерфейсы на то и нужны, чтобы быть публичными ) Чтобы внешний код был зависим от контракта, а не от реализации. Если интерфейс приватный и лежит рядом с реализацией, в чем тогда его смысл? Сам по себе публичный интерфейс не создаёт проблемы протекания абстракций. Проблему создают разработчики данного контракта, пытаясь сделать его универсальным или "гибким". Если контракт заставляет реализации знать о деталях внешнего окружения - абстракции текут. Если контракт заставляет внешнее окружение знать о деталях реализации - абстракции текут. Делайте строгие полные контакты и не будет проблем протечек.
@f0rzend59
@f0rzend59 3 ай бұрын
Это какой-то перезалив? Как будто я уже слышал этот доклад...
@Bunkerniy_Gadenish
@Bunkerniy_Gadenish 3 ай бұрын
Слышу «это база или лучшие практики» сразу посылаю скуфа накуй
Which team will win? Team Joy or Team Gumball?! 🤔
00:29
BigSchool
Рет қаралды 15 МЛН
The IMPOSSIBLE Puzzle..
00:55
Stokes Twins
Рет қаралды 91 МЛН
Go в Domain Driven Design / Дмитрий Анисов (GS Labs)
43:31
Vladimir Pastukhov: "There Will Be Chaos - and Someone Will Take Over" // "Tell Gordeeva"
3:30:05
Скажи Гордеевой
Рет қаралды 1,3 МЛН
Проектирование API в терминах RESTful
38:08
SQA ANALYST TECHWRITER DAYS
Рет қаралды 9 М.
Микросервисы Простыми Словами за 1 Час
48:56
Which team will win? Team Joy or Team Gumball?! 🤔
00:29
BigSchool
Рет қаралды 15 МЛН