1
00:00:00,000 --> 00:00:05,106
[МУЗЫКА]

2
00:00:05,106 --> 00:00:08,592
Давайте теперь рассмотрим инъекцию зависимостей.

3
00:00:08,592 --> 00:00:13,874
Что именно такое инъекция зависимостей и как она имеет отношение к Angular?

4
00:00:13,874 --> 00:00:17,180
Давайте поговорим об этом дальше.

5
00:00:17,180 --> 00:00:20,260
Итак, что именно такое инъекция зависимостей?

6
00:00:20,260 --> 00:00:24,600
Инъекция зависимостей - это шаблон проектирования программного обеспечения.

7
00:00:24,600 --> 00:00:28,890
Это шаблон, который полезен для реализации приложений, где у вас есть

8
00:00:28,890 --> 00:00:35,940
один объект, который зависит от другого объекта таким образом, который является эффективным.

9
00:00:35,940 --> 00:00:40,850
Теперь инъекция зависимостей, как мы понимаем, состоит из двух частей.

10
00:00:40,850 --> 00:00:43,280
Зависимость и инъекция.

11
00:00:43,280 --> 00:00:45,760
Давайте сначала поговорим о зависимости.

12
00:00:45,760 --> 00:00:50,750
Зависимость означает, что ваш объект зависит от другого объекта.

13
00:00:50,750 --> 00:00:55,400
Итак, именно поэтому это зависимость между вашим объектом и другим объектом.

14
00:00:56,500 --> 00:01:02,480
Injection говорит о передаче зависимости к зависимому объекту.

15
00:01:02,480 --> 00:01:06,570
Итак, если у вас есть объект, если есть механизм, который позволяет

16
00:01:06,570 --> 00:01:11,410
вы можете взять объект, а затем сделать его доступным для второго объекта, так

17
00:01:11,410 --> 00:01:15,360
, что другой объект может использовать его, не зная

18
00:01:15,360 --> 00:01:19,590
точно, как первый объект реализован или очищен.

19
00:01:19,590 --> 00:01:24,950
Таким образом, в этом случае зависимый объект не знает

20
00:01:24,950 --> 00:01:29,050
или не нужно беспокоиться о том, как реализован другой объект.

21
00:01:29,050 --> 00:01:34,250
Он просто должен использовать его, внутри вашего объекта, где бы он ни находился.

22
00:01:35,490 --> 00:01:41,090
Инъекция зависимостей была придумана Мартином Фаулером в 2004 году.

23
00:01:41,090 --> 00:01:47,520
И это полезный дизайн программного обеспечения, подчеркивающий далее зависимость.

24
00:01:48,670 --> 00:01:52,070
Если объект зависит от другого объекта

25
00:01:52,070 --> 00:01:56,035
существует три способа доступа к другому объекту.

26
00:01:56,035 --> 00:02:01,420
1, Он может создать сам зависимый объект, используя новый оператор

27
00:02:01,420 --> 00:02:03,650
вы видели это в случае классов.

28
00:02:03,650 --> 00:02:08,280
Так, например, если вам нужен новый объект типа класса,

29
00:02:08,280 --> 00:02:14,592
, то вы создаете этот объект, используя новый внутри языков, например C ++ или

30
00:02:14,592 --> 00:02:20,830
Java, и даже тип скрипта.

31
00:02:20,830 --> 00:02:26,850
Тогда вы можете использовать этот конкретный объект.

32
00:02:26,850 --> 00:02:30,950
Другой способ - объявить другой объект как глобальную переменную, а

33
00:02:30,950 --> 00:02:34,780
затем вы просматриваете зависимость, используя глобальную переменную.

34
00:02:34,780 --> 00:02:39,970
Третий способ сделать это - иметь зависимость, переданную в вас,

35
00:02:39,970 --> 00:02:41,730
везде, где это необходимо.

36
00:02:41,730 --> 00:02:45,690
Поэтому, если вы зависите от чего-то другого, то это что-то еще будет

37
00:02:45,690 --> 00:02:50,130
вводится в вас системой везде, где это требуется.

38
00:02:50,130 --> 00:02:54,680
Итак, теперь третий вариант дает вам большую гибкость в том, как

39
00:02:54,680 --> 00:02:57,610
, что программное обеспечение разработано.

40
00:02:57,610 --> 00:03:00,440
Таким образом, в этом подходе, в третьем подходе

41
00:03:00,440 --> 00:03:05,560
нет необходимости в жестком кодировании после зависимости.

42
00:03:05,560 --> 00:03:10,470
В первых двух подходах зависимость жестко закодирована там,

43
00:03:10,470 --> 00:03:13,470
, потому что вы должны быть полностью осведомлены о том, как вы создаете

44
00:03:13,470 --> 00:03:18,180
объект, от которого вы зависите, внутри вашего собственного объекта.

45
00:03:18,180 --> 00:03:19,577
В третьем объекте

46
00:03:19,577 --> 00:03:24,389
, потому что другой объект вводится в вас всякий раз, когда вам это нужно,

47
00:03:24,389 --> 00:03:29,220
вам все равно, как он создается, до тех пор, пока у вас есть доступ к нему.

48
00:03:29,220 --> 00:03:34,125
И еще одно преимущество, которое приносит этот подход, заключается в том, что он

49
00:03:34,125 --> 00:03:38,855
облегчает тестирование вашего приложения, потому что когда вам

50
00:03:38,855 --> 00:03:43,760
нужен объект, от которого вы зависите, вместо того, чтобы передавать

51
00:03:43,760 --> 00:03:49,020
зависимый объект, вы могли бы даже создать макет объекта типа, а затем передать его в

52
00:03:49,020 --> 00:03:53,850
, чтобы проверить свой конкретный объект.

53
00:03:53,850 --> 00:03:57,530
Это разделение между зависимым объектом и другим объектом очень,

54
00:03:57,530 --> 00:04:02,250
очень полезно, как мы понимаем при проведении тестирования.

55
00:04:02,250 --> 00:04:08,886
Мы кратко обсудим это, когда мы рассмотрим угловое тестирование позже в этом курсе.

56
00:04:08,886 --> 00:04:15,850
Инъекция зависимостей приводит к четырем различным ролям, которые мы должны учитывать.

57
00:04:15,850 --> 00:04:20,770
Во-первых, конечно, сервис, который вы собираетесь использовать в пределах

58
00:04:22,460 --> 00:04:27,160
вашего компонента, например, и который должен быть введен в.

59
00:04:27,160 --> 00:04:30,270
Второй клиент, который зависит от сервиса

60
00:04:30,270 --> 00:04:33,380
, который в данном случае является вашим компонентом.

61
00:04:33,380 --> 00:04:39,470
В-третьих, интерфейс, после того, как вы используете эту службу.

62
00:04:39,470 --> 00:04:43,420
И, наконец, инжектор, сущность, которая отвечает за

63
00:04:43,420 --> 00:04:47,230
инъекции этого объекта в ваш объект.

64
00:04:48,620 --> 00:04:50,730
Как вы скоро поймете,

65
00:04:50,730 --> 00:04:56,540
угловая экспресс-зависимость инъекция очень сильно в том, как она реализуется.

66
00:04:56,540 --> 00:05:01,090
Таким образом, это то, что облегчает разделение бизнес-логики

67
00:05:01,090 --> 00:05:05,040
от конструкции зависимостей, чтобы вы могли написать свою бизнес-логику в

68
00:05:05,040 --> 00:05:09,660
независимый объект, а затем вводить их везде, где это требуется.

69
00:05:09,660 --> 00:05:13,590
И зависимость передается в объект, который потребляет его

70
00:05:13,590 --> 00:05:15,130
везде, где это необходимо.

71
00:05:15,130 --> 00:05:19,760
Итак, как позаботится об этой инъекции?

72
00:05:19,760 --> 00:05:24,380
Об этой инъекции заботится подсистема угловой инъекции.

73
00:05:24,380 --> 00:05:30,250
Подсистема углового впрыска заботится о создании этих сервисов и

74
00:05:30,250 --> 00:05:35,120
затем вводит их в ваш компонент везде, где они вам нужны.

75
00:05:35,120 --> 00:05:38,540
Таким образом, он также заботится о разрешении зависимостей, а также

76
00:05:38,540 --> 00:05:45,030
предоставляя эти объекты другим компонентам, которые требуют этих объектов.

77
00:05:45,030 --> 00:05:49,180
Таким образом, угловая подсистема инжектора предоставляет все эти механизмы для

78
00:05:49,180 --> 00:05:50,770
нас, чтобы включить это.

79
00:05:50,770 --> 00:05:52,450
Как это работает на самом деле?

80
00:05:52,450 --> 00:05:57,101
Мы рассмотрим это в упражнении, которое следует,

81
00:05:57,101 --> 00:06:02,527
где мы будем использовать сервис, который мы создаем в компонентах

82
00:06:02,527 --> 00:06:06,977
, которые мы разработали для нашего углового приложения.

83
00:06:06,977 --> 00:06:12,169
[МУЗЫКА]