При разработке приложения организация кода является очень важной работой. Концепции проектирования кода помогают нам в организации кода, а внедрение зависимостей — одна из важных концепций проектирования кода.

Что такое зависимость?

Зависимость означает полагаться на что-то для поддержки.

Когда класс A использует некоторые функции класса B, мы можем сказать, что класс A зависит от класса B >.

Что такое внедрение зависимостей?

Внедрение зависимостей — это метод, при котором один объект предоставляет зависимости другого объекта.

Dependency Injection означает передачу задачи создания объекта кому-то другому, а непосредственное использование готовой зависимости называется Dependency Injection.

Внедрение зависимостей позволяет вам перемещать создание зависимых объектов за пределы класса.

Внедрение зависимостей выполняет три основные функции:

  1. Создайте объекты
  2. Знайте, какой класс требует эти объекты
  3. Предоставление всех объектов требуемым классам

Если есть какие-либо изменения в объектах, то внедрение зависимостей отвечает за обработку этих изменений. Поэтому, если какой-либо объект изменится в будущем, DI предоставит соответствующий объект классу. Внедрение зависимостей гарантирует, что класс не должен беспокоиться о создании объектов.

Преимущества использования внедрения зависимостей

  • Внедрение зависимостей помогает в модульном тестировании.
  • Это помогает сократить стандартный код.
  • Внедрение зависимостей помогает в слабой связи. Это гарантирует, что объекты не будут сильно ограничены друг другом.

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

  • Внедрение зависимостей сложно освоить.
  • Чрезмерное использование внедрения зависимостей может привести к проблемам с управлением кодом.
  • Внедрение зависимостей повышает риск ошибок во время выполнения.

Как работает внедрение зависимостей?

Процесс внедрения зависимостей включает в себя три типа классов:

  1. Клиентский класс.Клиентский класс — это класс, зависящий от класса обслуживания.
  2. Класс обслуживания.Класс обслуживания — это класс, предоставляющий услуги классу клиента.
  3. Класс-инжектор.Класс-инжектор внедряет объект класса обслуживания в класс клиента.

Типы внедрения зависимостей

Как мы знаем, Injector Class вводит сервис клиенту. Injector Class внедряет эти сервисы тремя способами:

  • Через конструктор
  • Через свойство
  • Через метод
  1. Внедрение конструктора. Таким образом, инжектор предоставляет зависимость через конструктор клиентского класса.
  2. Внедрение свойства. Таким образом, инжектор предоставляет зависимость через общедоступное свойство класса клиента.
  3. Внедрение метода. Таким образом, клиентский класс реализует интерфейс, который объявляет методы для предоставления зависимости, и инжектор использует этот интерфейс для предоставления зависимости клиентскому классу.

Это все, что касается внедрения зависимостей. Если вы не поняли концепцию, прочтите ее еще раз. Сложная тема ребята. Потребуется некоторое время, чтобы снять его. Так что успокойтесь и прочтите еще раз.

В этой серии статей о Flutter мы будем двигаться вперед с GetX. Проверьте мою публикацию и профиль, чтобы получить последние сообщения.

Итак, ребята, это все для управления государством. Не стесняйтесь сказать мне, если я что-то пропущу, я буду рад узнать об этом от вас. А пока продолжайте любить, продолжайте кодировать. И, как всегда, я догоню вас в следующей статье.

Помните, что ни учитель, ни книга, ни видеоурок, ни блог не научат вас всему. Кто-то сказал, что обучение — это путешествие, а путешествие никогда не заканчивается. Просто соберите некоторые данные тут и там, прочитайте их, изучите, попрактикуйтесь и попытайтесь применить. Не сомневайтесь, что вы не можете этого сделать или что вы не знаете ту или иную концепцию. Помните, что каждый программист сошел с пути, по которому вы сейчас идете. Помните, что каждый мастер когда-то был новичком. Работайте усердно и приложите все усилия.

Хотите связаться со мной? Вот ссылки. Я буду рад стать твоим другом. 😊

Твиттер

Фейсбук

Инстаграм

или просто напишите мне по адресу [email protected]