Действительно ли внедрение зависимостей действительно важно при разработке приложений для iOS? - PullRequest
0 голосов
/ 27 марта 2019

Я смотрю на ' Очисти ' и ' Swinject ' за последние два дня.Может кто-нибудь сказать мне или объяснить мне реальное использование инъекции зависимости и как она помогает нам в разработке приложений для iOS ?.

Я был действительно смущен тем, какая часть моего приложения (классы) мне нужна, чтобы применить инъекцию зависимости, а какая нет.Я думаю, что это делает мой код очень сложным.

Ответы [ 2 ]

1 голос
/ 27 марта 2019

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

Пример:

class UserViewModel {
     var User = User?
}

let UserViewModel = UserViewModel()
let User = User()
UserViewModel.User = User

Типы зависимости Инъекция:

  • внедрение зависимостей через инициализатор (внедрение инициализатора)
  • внедрение зависимостей с использованием свойств (внедрение свойств)
  • Внедрение зависимостей в методы (метод внедрения)

Преимущества, которые мы получим:

  • прозрачность

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

  • Улучшение тестируемости

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

  • Разделение концернов

Внедрение зависимостей позволяет нам понять наш код намного яснее и разделяет наши проблемы. Когда мы используем внедрение зависимостей, мы видим, что наши объекты отвечают за управление и обработку данной зависимости. Следуя одному из приведенных выше примеров, наша UserViewModel отвечает за управление и обработку нашего библиотечного объекта.

  • Слабая связь

Пример класса UserViewModel иллюстрирует, как использование протоколов и внедрение зависимостей может уменьшить связь в проекте. Протоколы невероятно полезны и универсальны в Swift. Пример, который мы обсуждали, - это сценарий, в котором протоколы действительно сияют.

0 голосов
/ 27 марта 2019

Документ Википедии ,

В программной инженерии внедрение зависимостей - это метод, при котором один объект (или статический метод) предоставляет зависимости другого объекта. Зависимость - это объект, который можно использовать (сервис).

А Проще говоря ,

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

Или

Передача задачи создания объекта кому-либо еще и непосредственное использование зависимости называется внедрением зависимости.

Диаграмма:

enter image description here


  1. Я был действительно смущен тем, какая часть моего приложения (классов) мне нужно применять инъекцию зависимости, а какая нет.

Вы почти широко используете это, но в андроиде это слово хорошо известно. Давайте рассмотрим пример,

Предположим, у нас есть два контроллера, masterVC и detailVC. detailVC показывает данные в деталях, какие данные выбраны в masterVC. Теперь вам нужно передать выбранные данные (ID, ключ) из masterVC в detailVC. Для этого вам нужно получить доступ к методу detailVC или переменной в masterVC, как показано ниже,

let objDetailVC = DetailVC() // Init of class
objDetailVC.ID = selectedID
// push controller

Теперь detailVC зависит от ID, это называется внедрение зависимостей ( DI ).

  1. Я думаю, это делает мой код очень сложным.

Нет, это делает ваш проект более динамичным. В настоящее время я управляю 5 контроллерами в одном контроллере с помощью структуры MVC и внедрения зависимостей. Проект очень плавный, хорошо управляемый, многократное использование кода.

Так что все зависит от вас, как вы управляете кодом.


Редактировать

Вы можете использовать DI, как в примере выше, или вы можете создать метод detailVC и рассматривать его как абстракцию.

Для получения более подробной информации см .: Cocoacast: Гайки и болты впрыска зависимости в Swift

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...