Принцип инверсии зависимостей — это буква «D» в SOLID-программировании.

Поднимите свой код на ступеньку выше с помощью принципа инверсии зависимостей! Результатом DIP станут архитектуры, которые:

  • Более гибкий!
  • Более безопасный!
  • Более стабильный!

Книга: https://amzn.to/3GPypMA

Транскрипты (следующие расшифровки создаются автоматически и могут содержать опечатки или неточности):

хорошо, мы сделали это, мы в d

Dip инверсия зависимости

принцип, который является D в твердом

последнее из нашего твердого программирования

принципы так

хм, что такое инверсия зависимости

принцип и почему я имел в виду

к нему в каждом видео из-за

конечно, это последнее, но не менее важное

тут наверное самое главное

гм, пока я спотыкаюсь о свои слова

мы собираемся продолжить и на самом деле

узнать, что это значит, что эффективно

что система будет более гибкой

когда ваши зависимости исходного кода ссылаются

к абстракциям над конкрециями, то есть

те абстракции, которые скрывают

детали реализации при импорте

те в класс или модуль, который вы

делая вашу систему более гибкой, когда

вы импортируете конкреции, которые

единицы кода, которые имеют фактическую

детали реализации, которые вы делаете

ваша система более жесткая и, следовательно, менее

терпимы к изменениям и поэтому чем больше мы

инвертировать эти зависимости с помощью dip

тем более гибкой будет система

давайте углубимся в это арканиум

добро пожаловать на постановку доктора Майлза

Аарон

Генеральный директор и соучредитель arcanium Ventures

не забудь подписаться подписаться

подписаться

Хорошо, если вы возьмете зависимость

принцип инверсии как эта великая вещь

что вы должны относиться ко всему, чтобы

сделать вашу систему более гибкой в ​​некоторых

точка ваша система будет такой

гибкий, что это будет больно

работай и не будешь

в состоянии сделать что-либо, так что это становится

очевидно, что нам нужен какой-то способ

думать об этом не получается

в размещении какого-либо интерфейса или

адаптер между каждой отдельной функцией в

наша кодовая база и есть пара

способы думать об этом так, как это

Дядя Боб делится тем, что я думаю, что это так.

большой

гм, что вы должны думать о

волатильность этих конкретных классов или

конкретные артефакты так

в ваших конкрециях у вас есть

детали реализации, которые могут быть где

фактически описывается функция, где

функция

гм детали реализации живы и что

функция может потребовать некоторых других

функции, может быть, они даже язык

встроенные функции или, может быть, они просто

некоторые частные методы, которые также

конкретный и вам не нужны интерфейсы

между тем, потому что

um

у них есть эта высокая сплоченность, и они

стабильно, и поэтому дядя Боб говорит,

обратите внимание на волатильность вашего

конкретные абстракции, поэтому, если это очень

volatile это, вероятно, что-то, что

может вызвать проблемы, если это чрезвычайно

стабильный

эм, тогда это, вероятно, что-то вы

не нужно так сильно переживать и

что за провал или инверсия зависимости

принцип учит нас тому, что мы должны

благосклонность

стабильные интерфейсы, поэтому, когда вы делаете

гм, ваши абстракции чрезвычайно стабильны

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

принципы как лисков

в основном мы используем open close

принцип здесь мы делаем это

интерфейс очень стабильный, так что гм

бетонные детали могут быть заменены в и

или мы можем даже изменить бетон

Части

гм, но мы действительно не требуем

перейти на наш интерфейс, потому что мы

следуя этому открытому закрытому принципу и

список замены Принцип как

описано в предыдущих видео и так

um

это дает вам способ сосредоточиться

свою энергию вместо того, чтобы делать это

система, которая имеет слишком много степеней

свобода во многом мне нравится думать

программного обеспечения, как когда вы добавляете

эти

абстракции эти эти слои в

между тем не несите

детали реализации

хм, это вроде как вы добавляете

степень свободы в гм в массу

пружинная демпферная система в машиностроении или

вибрации машиностроения и как

вы можете себе представить, если у вас есть эта система

пружин и масс и как вы

добавление дополнительных коннекторов и пружин

и больше петель, и в итоге вы получите

эта система, которая просто гибкая и

бесполезно и хаотично, и так вы делаете

хочу иметь

um

некоторый контроль и некоторые мысли позади

это и способ сделать это в соответствии

к волатильности сейчас один из способов сделать

это практично, просто посмотрите на свой код

база, вся аналитика git верна

там для вас, и вы можете увидеть, какие

гм конкретные части моей кодовой базы

какие детали реализации получают

больше всего трафика и больше всего изменений

хм хорошо, если это означает, что они очень

volatile Я хочу убедиться, что у меня есть

конюшня

абстракция, к которой они подключены

стабильный интерфейс, чтобы он мог

изолировать остальную часть моей кодовой базы от

немного этой нестабильности, и вы можете

использовать принцип инверсии зависимости

для достижения этого другой способ думать

обо всем этом, что я думаю, действительно

практический, чтобы сказать, что я хочу поставить

вся моя бизнес-логика в моем

абстракции, так что настоящее мясо вы знаете

того, что делает приложение, находится в

абстракции и все реализации

детали сделки находятся в конкрециях и

так что эта идея иметь ваш конкретный

компоненты, идущие к вашему тезису

компонентов, это позволяет говорить о том, что

эффективно зависимости исходного кода

идут против потока управления

и это все инверсия зависимости

на самом деле и как вы разделяете

абстрактные компоненты из вашего бетона

компоненты, и у вас есть стабильная

интерфейсы для борьбы с волатильностью

из летучего бетона

детали реализации, которые вы

эффективно создать архитектурный

граница и так, как мы идем от мышления

об этом с точки зрения вы знаете классов

и функции и модули вплоть до

компоненты, а затем мы начинаем смотреть на

целые архитектуры

это становится зависимостью

принцип инверсии приводит к фактическому

архитектурные границы, где вы находитесь

говоря эй это граница между

абстрактно и конкретно я вижу, что

там будет что-то еще

другая сторона этой линии и

начинает ломать вашу архитектуру

в конечном итоге в домены, если вы

после какого-то домена

дизайн, но создает это

гм, это своего рода высокий уровень

разделение архитектурных доменов

не только компоненты и модули и

функции, похожие на многие вещи, на которые это похоже

архитектура программного обеспечения представляет собой большой фрактал

мужчина

так что теперь я хочу поговорить только о трех

способы кратко, что вы можете использовать

принцип инверсии зависимости что

шаблоны, которые создаются в вашем программном обеспечении

один пример, который я использую все время, это

называется шаблоном адаптера, что такое

шаблон адаптера проще говоря, это способ

вставьте квадратный колышек в круглое отверстие, чтобы, когда

вы используете шаблон адаптера, что

ты говоришь, что я хочу быть

в состоянии приспособить эту вещь к той вещи

и

[Музыка]

на практике это может выглядеть примерно так

платежная система, например, где вы

хотите иметь возможность использовать страйп-платеж

процессор или платеж Paypal

процессор или другая плата

процессор, который приходит по пути

без необходимости

um

переделай свое приложение перепиши свой

код приложения, поэтому вы используете

шаблон адаптера, чтобы иметь небольшой адаптер

между ними, что позволяет различные платежи

процессоры, подключаемые без

изменение любой бизнес-логики на

абстрактная сторона этого архитектурного

граница сейчас

появится еще одна закономерность

рисунок фасада так где переходник

говоря о Square Peg и

круглое отверстие рисунок фасада больше

о совместимости

какая-то более сложная система, чем

просто один к одному, так что мне нравится думать о

узор фасада и другие сказали

это, а также больше панели управления

это как абстрагироваться от всего

детали реализации намного больше

сложная система, потенциально вы не

знаю, как это сложно, но это просто дает

у вас есть несколько ручек и некоторые переключатели

и так это просто принимает это

шаблон адаптера на ступеньку выше, чтобы создать

весь интерфейс к другой системе, где

детали реализации

полностью спрятан и так последний

образец, который вы увидите, появляется из

принцип инверсии зависимости, который

мы поговорим о сегодняшнем заводе

шаблоны и есть несколько разных

Заводские образцы, которые вы можете проверить, мы

не собираюсь раскрывать детали прямо

сейчас а вообще заводская выкройка есть

эффективно

принимая некоторые разрозненные объекты, которые

гм или некоторые объекты, которые создаются в

разрозненные места и создание фабрики

чтобы создать их в одном месте для создания

этот абстрактный интерфейс снова принести

Что было

гм помещая детали реализации на

абстрактную сторону и доведение ее до

конкретная сторона вашей архитектуры

эффективно это меняется там, где объекты

сделаны так, что там, где находятся объекты

используется не там, где они созданы, поэтому

проще говоря, так как я просто напортачил ад

из этих заводов можно использовать для размещения

чтобы отделить, где объекты используются от

где создаются объекты и обычно вы

собираются сделать эти объекты в

конкретная сторона вашей архитектуры

вы собираетесь использовать фабрику для моста

от конкретной стороны к абстрактной стороне

для того, чтобы ваше приложение

детали зависят только от этой фабрики

чтобы он мог использовать эти объекты без

имеющие связи с деталями вокруг

как эти объекты сделаны, поэтому у нас есть

переходник у нас получился узор фасада

у нас есть заводы зависимость

принцип инверсии, который вы должны проверить

внедрение зависимостей, которое использует очень

похожие концепции, а также

гм, и вы будете на гонках

надеюсь, вам понравилась эта серия на

солидный, мне нужно прыгать на встречу, поэтому я

увидимся в нашем следующем путешествии в

архитектуру программного обеспечения мы рассмотрели все

основы теперь я считаю разумным

уровень

гм, так что я надеюсь, что мы попадем в некоторые

более

гм захватывающая архитектура и начало

глядя на некоторые репозитории с открытым исходным кодом

скоро увидимся в следующий раз