Dependency Injection / Внедрение зависимостей / Вопросы на собеседовании по программированию

แชร์
ฝัง
  • เผยแพร่เมื่อ 19 ธ.ค. 2024

ความคิดเห็น • 62

  • @Revenant520
    @Revenant520 2 ปีที่แล้ว +20

    На данный момент, это лучшее объяснение DI, которое я встречал!

  • @speedrages
    @speedrages ปีที่แล้ว +43

    Почему ты не снимаешь другие видео по программированию. С таким объяснением и примерами тебе цены нет💪

  • @jarjarbinks6015
    @jarjarbinks6015 ปีที่แล้ว +7

    госпади, здоровье тебе и твоим родственникам, это просто самое божественное, краткое и емкое объяснение DI.

  • @minimalstory
    @minimalstory ปีที่แล้ว +6

    2 года прошло, а до сих пор лучшее объяснение, советую всем нашим джунам)

  • @gennadyga2257
    @gennadyga2257 ปีที่แล้ว +3

    Это лучшее, что мог найти, простыми словами, порт для устройства. Круто Спасибо! Побольше б таких видео.

  • @AndriiNikolaiev
    @AndriiNikolaiev 3 ปีที่แล้ว +43

    Почему застрял? Давай новые ролики. Голос отличный. Ролик лаконичный. Требую продолжения банкета!

  • @burningdaylight9171
    @burningdaylight9171 2 ปีที่แล้ว +5

    самый лаконичный и доходчиво ответ. браво!

  • @meosaganami5472
    @meosaganami5472 3 ปีที่แล้ว +35

    Я всё ещё не понимаю, зачем придумывать специальные названия для здравого смысла? Приходишь на собеседование, а тебе там "а что такое тындрение залысенностей?". сиди и думай блин. потом окажется, что это паттерн разделения своей ноги и направления выстрела

    • @voidplusplusru
      @voidplusplusru  3 ปีที่แล้ว +10

      Мне тоже это не нравится. Сильно усложняет понимание. Однако, это терминология, проф язык. В общении между программистами в команде, вместо использования длинных формулировок с уточнениями, проще назвать термин и всем сразу становится понятно о чем речь. Хотя порой программисты увлекаются, и придумывают новые термины там, где это не нужно, наверно для самоутверждения.

    • @alexanderbelov6892
      @alexanderbelov6892 3 ปีที่แล้ว +1

      @@voidplusplusru Всё равно выпендрёж. Никогда не слышал на работе высокоинтеллектуальных бесед на тему паттернов и таких вот терминов при обсуждении кода. Даже если паттернов в коде навалом, то его всё равно могут не понимать. Может паттернов не знают?
      Но на собеседовании видимо это важно.

    • @radasmelaya6492
      @radasmelaya6492 2 ปีที่แล้ว +1

      @@alexanderbelov6892 поддерживаю, обычно у тебя задача и ты идешь и пишешь ее решение без всяких указаний что и как. Обычно такие вопросы проводят неопытные специалисты- или только с института или hr. Горазда важнее посмотреть как именно будет решаться задача, а не определение терминов

    • @vladbreez4036
      @vladbreez4036 2 ปีที่แล้ว +1

      Разделение ноги, направление выстрела...
      В этом нет смысла или я тупой.

    • @meosaganami5472
      @meosaganami5472 2 ปีที่แล้ว +3

      ​@@vladbreez4036 одно другому не мешает, хоть я и правда немного коряво сформулировал

  • @aoveden197727
    @aoveden197727 3 ปีที่แล้ว +33

    Очень хорошо объяснено. Давай в догонку IoC и так по всем основным понятиям.

  • @evildaimyo3746
    @evildaimyo3746 3 ปีที่แล้ว +4

    😯 Моё лицо когда посмотрел видео про DI, а понял что такое moq и для чего он по сути нужен))))

  • @kanybekmomukeev4116
    @kanybekmomukeev4116 3 ปีที่แล้ว +1

    Очень круто, сколько юзал данный подход, но не знал что
    То и есть di

  • @ix3909
    @ix3909 9 หลายเดือนก่อน

    Офигеть, принцип инверсии зависимостей и композицию выделили аж в отдельный паттерн 😂

  • @liyaguliaieva1111
    @liyaguliaieva1111 ปีที่แล้ว

    Это просто гениальное объяснение!!! Спасибо 🙏👏👏👏👏

  • @tov3801
    @tov3801 3 ปีที่แล้ว +3

    Как раз готовлюсь к собеседованиям. Ролик очень полезен. Спасибо!

  • @olehdumanskyi7830
    @olehdumanskyi7830 3 ปีที่แล้ว +6

    Ролик бомба! Спасибо за разъяснение.

  • @sortadorgin9327
    @sortadorgin9327 ปีที่แล้ว

    вельми дякую) дуже лаконічне поясненя

  • @TheKirk1989
    @TheKirk1989 ปีที่แล้ว

    хмм, не знаю почему, быть может просто настало время, но именно на этом ролике я начал более менее понимать, зачем нужен этот паттерн проектирования

  • @teawizzard
    @teawizzard ปีที่แล้ว

    Вот так надо
    Внедрение зависимости (англ. Dependency injection, DI) - процесс предоставления внешней зависимости программному компоненту. Является специфичной формой «инверсии управления» (англ. Inversion of control, IoC), когда она применяется к управлению зависимостями. В полном соответствии с принципом единственной ответственности объект отдаёт заботу о построении требуемых ему зависимостей внешнему, специально предназначенному для этого общему механизму[1].

  • @pawsdev
    @pawsdev ปีที่แล้ว +1

    Идеально! столько болтовни вокруг этой херни, а туту хрясь пара скринов и все сразу ясно)) Для Java это тоже подходит

  • @КанцеровВалентинСергеевич

    кратко и понятно везде бы так

  • @apdgslfhsodbna
    @apdgslfhsodbna 2 ปีที่แล้ว +9

    Есть достаточно удачная формулировка: "класс должен зависеть от абстракции, а не от конкретной реализации", и далее можно рассказать про агрегацию в виде передачи параметра типа интерфейса в конструктор класса и что этот подход является эволюцией фабричного метода 🙂

    • @apdgslfhsodbna
      @apdgslfhsodbna 2 ปีที่แล้ว

      @@mamikonpapikyan6120 , Ioc - идея, dependency inversion - принцип, dependency injection - реализация

    • @kingslayer7679
      @kingslayer7679 ปีที่แล้ว +2

      @@apdgslfhsodbna Вы путаете два понятия близкие к себе но всё же разные.

  • @zeOnni
    @zeOnni 8 หลายเดือนก่อน +1

    Я обычно прошу написать функцию сложения двух чисел без DI

  • @kuanyshkudaibergenov7041
    @kuanyshkudaibergenov7041 ปีที่แล้ว

    классное объяснение

  • @SergeyDovbenko
    @SergeyDovbenko ปีที่แล้ว

    Ещё один положительный момент а ДИ это возможность поумничать перед кандидатом😂

  • @toxicknight3079
    @toxicknight3079 ปีที่แล้ว

    Запили такой же видосик по IoC и IoC-контейнерам, ради христа)

  • @2двестник
    @2двестник 2 ปีที่แล้ว

    Спасибо за разъяснения

  • @SafargalinVladislavbimka89
    @SafargalinVladislavbimka89 ปีที่แล้ว +1

    Только что узнал о существовании этой фичи и вроде, как круто, не нужно создавать экземпляры классов. Нооо не понимаю, как это применить с MVVM, биндинги отлично отделяют вьюшку от viewmodel и делают их не зависимыми друг от друга, как я понял эта фича помогает сделатт viewmodel более независимой от самой model. Но тогда, как мне свойства вьюмодели привязать к данным, я же не могу в классе вьюмодели делать sql запросы, напрямую привязывать тоже, в конструкторе вьюмодел, я не могу передавать аргументы, возникнет ошибка между вьюшкой и самой вьюмоделью, наследовать я тоже не могу, ведь вьюмодел уже наследуется от BindableBase да и смысла нету реализовывать это во вьюмодел, ведь суть и заключается, чтобы отделить ее от модели. Допустим есть данные в sql и модель этих данных, я создам интерфейс и класс который будет вытаскивать данные из БД, а теперь как свойства вьюмодел привязать к этим данным? Не совсем понимаю что такое Response в примере, просто класс который реализует этот интерфейс? Извиняюсь если задаю глупые вопросы, не так давно начал изучать паттерны очень сложно самому находить понятную простым смертным информацию(.
    Пукан подгорел пока пытался найти что-то по MVVM и внедрению зависимостей, какие-то контейнеры, какие-то хостинги, службы, сервисы...

    • @voidplusplusru
      @voidplusplusru  ปีที่แล้ว +1

      Не уверен, что полностью понял, что вы пытаетесь сделать. Полагаю, что в вашем случае нужно внедрять зависимость (некий сервис, который вытаскивает данные из БД) во вьюмодел. Тут есть пример community.devexpress.com/blogs/wpf/archive/2022/02/07/dependency-injection-in-a-wpf-mvvm-application.aspx
      В моем примере Response - это просто модель, которую возвращает метод, отношения к DI не имеет.

    • @SafargalinVladislavbimka89
      @SafargalinVladislavbimka89 ปีที่แล้ว

      @@voidplusplusru то что я искал, спасибо огромное !

  • @КириллЧе-я5ы
    @КириллЧе-я5ы 10 หลายเดือนก่อน

    Интересно, а если мне нужно передать объект, который имплементируется неск интерфейсами?..

  • @ser9ga592
    @ser9ga592 ปีที่แล้ว

    D в SOLID - это Dependensy Inversion. А вы назвали и объяснили dependency injection. Темы немного пересекающиеся, но всё таки разные

    • @КимЧенОрк
      @КимЧенОрк ปีที่แล้ว +4

      👀👀👀👀
      Где SOLID автором упомянут?

  • @taniakedrova
    @taniakedrova 3 ปีที่แล้ว

    спасибо за видео!

  • @eu-rn1xb
    @eu-rn1xb ปีที่แล้ว

    Остался вопрос по контейнеру. Должна быть возможность зарегистрированные зависимости локализовать, верно? Потому что не везде мне нужно подставлять так, как я хочу в конкретном месте. В одном месте я такую зависимость регистрирую, в другом - другую, и они друг другу противоречат...
    Например, вот здесь 4:37 меня устраивает связь DbContext. А вот в другом месте я хочу MyDbContext

    • @voidplusplusru
      @voidplusplusru  ปีที่แล้ว +1

      Это можно решить разными способами. Зависит от того, что позволяет делать конкретный IoC. В некоторых случаях можно именовать каждую регистрацию. Я бы в таком случае просто сделал интерфейс IMyDbContext, который наследует от IDbContext и MyDbContext будет его реализовывать. И там, где нужен MyDbContext указываем интерфейс IMyDbContext.

  • @dzmitrykuhukou4480
    @dzmitrykuhukou4480 ปีที่แล้ว +2

    хрена себе комменты, видимо, тут все и так в курсе, как это работает, т.к. если бы я был не в курсе - хер бы что было понятно....

  • @vladead8
    @vladead8 ปีที่แล้ว

    Годно, спасибо

  • @ГеннадийШушпанов-д1ч
    @ГеннадийШушпанов-д1ч หลายเดือนก่อน

    Стремление получить звучное название привело к путанице с этим методом. Здесь нет внедрения, здесь явное устранение зависимости от реализации путем замены типа контракта с класса на интерфейс.
    Место создания передаваемого объекта вообще не имеет отношения к рассматриваемому методу. Суть его не будет нарушена, если вместо IDbContext будет передана фабрика контекстов, а сам контекст будет создан через вызов ее метода.

  • @GraMuzgobChick
    @GraMuzgobChick 10 หลายเดือนก่อน

    Вы случайно не играли в бдо ? Очень похожий голос просто

  • @agnia.starovoitova
    @agnia.starovoitova 3 ปีที่แล้ว

    Хорошо изложен материал, жду новые видео 😀

  • @excellent18rus
    @excellent18rus ปีที่แล้ว +4

    а я так ваще ниче не понял)))

  • @Павел-ч9и4н
    @Павел-ч9и4н 3 ปีที่แล้ว +4

    Я не знаю зачем мне Ютуб выплюнул это видео, видимо чтобы я оставил тебе коммент =)
    Я часто сталкиваюсь с тем, что у собеседников переплетено понятие внедрения зависимостей и инверсии зависимостей (хотя в целом, с точки зрения реализации без контейнера выглядит одинаково и их тут нечего судить), ну и даже если программист понимает теорию внедрения, то не может ответить в чем же его минусы, а ведь о них написано не так много и обычно понимаешь только набив пару шишек. В общем, я бы добавил такую инфу в видео, чтобы получилось поставить точку над i.
    Удачи!)

    • @JPyanikova
      @JPyanikova 3 ปีที่แล้ว +3

      В чем же его минусы?

  • @Anik_666
    @Anik_666 10 หลายเดือนก่อน

    Почав з залежностей, закінчив інверсією тих же залежностей( не сказавши про це), потім на di контейнер переліз)))) ляяяяя жесть

  • @OpalGooDog
    @OpalGooDog 3 ปีที่แล้ว

    Спасибо!

  • @teawizzard
    @teawizzard ปีที่แล้ว

    Вначале я не понял, а потом я начал тупо угорать 😂 Потом дежавю

  • @smookkee1
    @smookkee1 2 ปีที่แล้ว

    Di - это агрегация, так?

  • @of_youtube
    @of_youtube 2 ปีที่แล้ว

    Чел харош

  • @SinnerWar
    @SinnerWar ปีที่แล้ว

    За 4 минуты вся база, а то зае... своими книгами по 400+ страниц с кучей воды, на такие простые темы не очень как по мне важные

  • @КанцеровВалентинСергеевич

    чел, угорает, МНОГО РАЗЖЕВАННОЙ информация

  • @АнтонЛебедев-н1н
    @АнтонЛебедев-н1н 4 หลายเดือนก่อน

    Нихуя не понял, ладно

  • @dok.8078
    @dok.8078 2 ปีที่แล้ว +1

    Тема размазана в ограниченных знаниях автора… читай больше, ServiceLocator не обходи.