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

Поділитися
Вставка
  • Опубліковано 25 лис 2024

КОМЕНТАРІ • 10

  • @Elijah-xe2he
    @Elijah-xe2he 3 місяці тому

    Если я правильно понял, в представленной структуре слой application зависит от infrastructure.
    В луковой и подобным архитектурам как раз наоборот infrastructure должна зависеть от application.
    Полагаю, автор доклада изменил направление зависимости, чтобы было проще дергать инфру из application не плодя лишние интерфейсы? Тогда это неправильно называть луковой архитектурой.

    • @mtk6188
      @mtk6188 3 місяці тому

      Нет, инфраструктура на то и инфраструктура, чтобы стоять особняком: в ней находятся детали реализации типа "как отправить емейл", или "как ходить в базу" и т.п. В аппликейшен лейере вы описываете конкретные бизнес юзкейсы, например, достать из репозитория объект, запустить на нем доменную логику, отправить емейл после и т.д.

    • @Elijah-xe2he
      @Elijah-xe2he 3 місяці тому

      @@mtk6188 я понимаю, что размещается в инфре, что в app слое, что в доменке. Нарушать зависимости слоев неправильно, если хотите луковую/чистую/хексагональную архитектуру. Никто не запрещает из app слоя обращаться к репозиторию, на то и придуманы интерфейсы и IoC.

  • @f0rzend59
    @f0rzend59 3 місяці тому

    Это какой-то перезалив? Как будто я уже слышал этот доклад...

    • @Bunkerniy_Gadenish
      @Bunkerniy_Gadenish 3 місяці тому

      Слышу «это база или лучшие практики» сразу посылаю скуфа накуй

  • @alexandrfolomkin9380
    @alexandrfolomkin9380 3 місяці тому

    Выносить интерфейсы в go в отдельный пакет - такое себе решение, сразу оказывается что интерфейс становится публичным, а значит может где-то использоватся - а это уже протекание абстракций. Интерфейсы должны объявляться в том же месте где и используются
    Использовать функцию init - это антипаттерн - неявное выполнение кода, тем более с if. Для настройки лучше использовать репозиторий с несколькими реализациями.
    application и service - граница какая-то вялая между ними
    Короче, питонист пришел в гошку и наводит шорох

    • @asdfsavs6846
      @asdfsavs6846 3 місяці тому

      Вопрос по поводу интерфейсов. Допустим есть интерфейс репозитория. Репозиторий нужно использовать в нескольких местах (сервисах). Что вы предлагаете? Копи-пастить интерфейс в два места?

    • @maoshultz1731
      @maoshultz1731 3 місяці тому

      Там где вы его реализуете

    • @Elijah-xe2he
      @Elijah-xe2he 3 місяці тому +1

      Интерфейсы на то и нужны, чтобы быть публичными ) Чтобы внешний код был зависим от контракта, а не от реализации. Если интерфейс приватный и лежит рядом с реализацией, в чем тогда его смысл?
      Сам по себе публичный интерфейс не создаёт проблемы протекания абстракций. Проблему создают разработчики данного контракта, пытаясь сделать его универсальным или "гибким".
      Если контракт заставляет реализации знать о деталях внешнего окружения - абстракции текут. Если контракт заставляет внешнее окружение знать о деталях реализации - абстракции текут.
      Делайте строгие полные контакты и не будет проблем протечек.