[МУЗЫКА]
Давайте теперь рассмотрим инъекцию зависимостей.
Что именно такое инъекция зависимостей и как она имеет отношение к Angular?
Давайте поговорим об этом дальше.
Итак, что именно такое инъекция зависимостей?
Инъекция зависимостей - это шаблон проектирования программного обеспечения.
Это шаблон, который полезен для реализации приложений, где у вас есть
один объект, который зависит от другого объекта таким образом, который является эффективным.
Теперь инъекция зависимостей, как мы понимаем, состоит из двух частей.
Зависимость и инъекция.
Давайте сначала поговорим о зависимости.
Зависимость означает, что ваш объект зависит от другого объекта.
Итак, именно поэтому это зависимость между вашим объектом и другим объектом.
Injection говорит о передаче зависимости к зависимому объекту.
Итак, если у вас есть объект, если есть механизм, который позволяет
вы можете взять объект, а затем сделать его доступным для второго объекта, так
, что другой объект может использовать его, не зная
точно, как первый объект реализован или очищен.
Таким образом, в этом случае зависимый объект не знает
или не нужно беспокоиться о том, как реализован другой объект.
Он просто должен использовать его, внутри вашего объекта, где бы он ни находился.
Инъекция зависимостей была придумана Мартином Фаулером в 2004 году.
И это полезный дизайн программного обеспечения, подчеркивающий далее зависимость.
Если объект зависит от другого объекта
существует три способа доступа к другому объекту.
1, Он может создать сам зависимый объект, используя новый оператор
вы видели это в случае классов.
Так, например, если вам нужен новый объект типа класса,
, то вы создаете этот объект, используя новый внутри языков, например C ++ или
Java, и даже тип скрипта.
Тогда вы можете использовать этот конкретный объект.
Другой способ - объявить другой объект как глобальную переменную, а
затем вы просматриваете зависимость, используя глобальную переменную.
Третий способ сделать это - иметь зависимость, переданную в вас,
везде, где это необходимо.
Поэтому, если вы зависите от чего-то другого, то это что-то еще будет
вводится в вас системой везде, где это требуется.
Итак, теперь третий вариант дает вам большую гибкость в том, как
, что программное обеспечение разработано.
Таким образом, в этом подходе, в третьем подходе
нет необходимости в жестком кодировании после зависимости.
В первых двух подходах зависимость жестко закодирована там,
, потому что вы должны быть полностью осведомлены о том, как вы создаете
объект, от которого вы зависите, внутри вашего собственного объекта.
В третьем объекте
, потому что другой объект вводится в вас всякий раз, когда вам это нужно,
вам все равно, как он создается, до тех пор, пока у вас есть доступ к нему.
И еще одно преимущество, которое приносит этот подход, заключается в том, что он
облегчает тестирование вашего приложения, потому что когда вам
нужен объект, от которого вы зависите, вместо того, чтобы передавать
зависимый объект, вы могли бы даже создать макет объекта типа, а затем передать его в
, чтобы проверить свой конкретный объект.
Это разделение между зависимым объектом и другим объектом очень,
очень полезно, как мы понимаем при проведении тестирования.
Мы кратко обсудим это, когда мы рассмотрим угловое тестирование позже в этом курсе.
Инъекция зависимостей приводит к четырем различным ролям, которые мы должны учитывать.
Во-первых, конечно, сервис, который вы собираетесь использовать в пределах
вашего компонента, например, и который должен быть введен в.
Второй клиент, который зависит от сервиса
, который в данном случае является вашим компонентом.
В-третьих, интерфейс, после того, как вы используете эту службу.
И, наконец, инжектор, сущность, которая отвечает за
инъекции этого объекта в ваш объект.
Как вы скоро поймете,
угловая экспресс-зависимость инъекция очень сильно в том, как она реализуется.
Таким образом, это то, что облегчает разделение бизнес-логики
от конструкции зависимостей, чтобы вы могли написать свою бизнес-логику в
независимый объект, а затем вводить их везде, где это требуется.
И зависимость передается в объект, который потребляет его
везде, где это необходимо.
Итак, как позаботится об этой инъекции?
Об этой инъекции заботится подсистема угловой инъекции.
Подсистема углового впрыска заботится о создании этих сервисов и
затем вводит их в ваш компонент везде, где они вам нужны.
Таким образом, он также заботится о разрешении зависимостей, а также
предоставляя эти объекты другим компонентам, которые требуют этих объектов.
Таким образом, угловая подсистема инжектора предоставляет все эти механизмы для
нас, чтобы включить это.
Как это работает на самом деле?
Мы рассмотрим это в упражнении, которое следует,
где мы будем использовать сервис, который мы создаем в компонентах
, которые мы разработали для нашего углового приложения.
[МУЗЫКА]