1
00:00:00,000 --> 00:00:05,106
[MÚSICA]

2
00:00:05,106 --> 00:00:08,592
Vamos agora dar uma olhada penetrante na injeção de dependência.

3
00:00:08,592 --> 00:00:13,874
O que exatamente é injeção de dependência e como ela é relevante para Angular?

4
00:00:13,874 --> 00:00:17,180
Vamos falar sobre isso a seguir.

5
00:00:17,180 --> 00:00:20,260
Então, o que exatamente é injeção de dependência?

6
00:00:20,260 --> 00:00:24,600
Injeção de dependência É um padrão de design de software.

7
00:00:24,600 --> 00:00:28,890
Este é um padrão que é útil para implementar aplicativos onde você tem

8
00:00:28,890 --> 00:00:35,940
um objeto que é dependente de outro objeto de uma maneira que é eficiente.

9
00:00:35,940 --> 00:00:40,850
Agora, a Injeção de Dependência, como percebemos, tem duas partes.

10
00:00:40,850 --> 00:00:43,280
Dependência e injeção.

11
00:00:43,280 --> 00:00:45,760
Vamos falar sobre a dependência primeiro.

12
00:00:45,760 --> 00:00:50,750
Dependência significa que seu objeto depende de outro objeto.

13
00:00:50,750 --> 00:00:55,400
Então, é por isso que é uma dependência entre seu objeto e outro objeto.

14
00:00:56,500 --> 00:01:02,480
Injeção está falando sobre passar a dependência para um objeto dependente.

15
00:01:02,480 --> 00:01:06,570
Então, se você tem um objeto, se há um mecanismo que permite

16
00:01:06,570 --> 00:01:11,410
você ser capaz de pegar um objeto e, em seguida, torná-lo disponível para um segundo objeto, de modo

17
00:01:11,410 --> 00:01:15,360
que o outro objeto pode fazer uso dele sem estar ciente de

18
00:01:15,360 --> 00:01:19,590
exatamente como o primeiro objeto é implementado ou limpo.

19
00:01:19,590 --> 00:01:24,950
Assim, neste caso, o objeto que é dependente não está ciente,

20
00:01:24,950 --> 00:01:29,050
ou não precisa se preocupar com como o outro objeto é implementado.

21
00:01:29,050 --> 00:01:34,250
Ele só precisa fazer uso dele, dentro do seu objeto, onde quer que ele esteja.

22
00:01:35,490 --> 00:01:41,090
Dependency Injection foi cunhada por Martin Fowler em 2004.

23
00:01:41,090 --> 00:01:47,520
E é um design de software útil enfatizando ainda mais a dependência.

24
00:01:48,670 --> 00:01:52,070
Se um objeto for dependente de outro objeto

25
00:01:52,070 --> 00:01:56,035
, há três maneiras de acessar o outro objeto.

26
00:01:56,035 --> 00:02:01,420
1, Ele pode criar o próprio objeto dependente usando o novo operador

27
00:02:01,420 --> 00:02:03,650
você viu isso no caso de classes.

28
00:02:03,650 --> 00:02:08,280
Então, por exemplo, se você precisar de um novo objeto de um tipo de classe,

29
00:02:08,280 --> 00:02:14,592
então você cria esse objeto usando o novo dentro de linguagens, como C++ ou

30
00:02:14,592 --> 00:02:20,830
Java, e até mesmo digite script.

31
00:02:20,830 --> 00:02:26,850
Em seguida, você pode fazer uso desse objeto específico.

32
00:02:26,850 --> 00:02:30,950
A outra maneira é declarar o outro objeto como uma variável global, e

33
00:02:30,950 --> 00:02:34,780
então você procurar a dependência usando a variável global.

34
00:02:34,780 --> 00:02:39,970
A terceira maneira de fazer isso é ter a dependência passada para você,

35
00:02:39,970 --> 00:02:41,730
onde quer que seja necessário.

36
00:02:41,730 --> 00:02:45,690
Então, se você é dependente de outra coisa, então essa outra coisa será

37
00:02:45,690 --> 00:02:50,130
injetada em você por um sistema onde quer que seja necessário.

38
00:02:50,130 --> 00:02:54,680
Então, agora a terceira opção lhe dá muita flexibilidade na forma

39
00:02:54,680 --> 00:02:57,610
que o software é projetado.

40
00:02:57,610 --> 00:03:00,440
Assim, nesta abordagem, na terceira abordagem,

41
00:03:00,440 --> 00:03:05,560
não há necessidade de codificação dura após dependência.

42
00:03:05,560 --> 00:03:10,470
Nas duas primeiras abordagens, a dependência é codificada lá,

43
00:03:10,470 --> 00:03:13,470
porque você precisa estar totalmente ciente de como você cria

44
00:03:13,470 --> 00:03:18,180
o objeto do qual você é dependente, dentro do seu próprio objeto.

45
00:03:18,180 --> 00:03:19,577
No terceiro objeto,

46
00:03:19,577 --> 00:03:24,389
porque o outro objeto está sendo injetado em você sempre que você precisar dele,

47
00:03:24,389 --> 00:03:29,220
você realmente não se importa como ele é criado, desde que você tenha acesso a ele.

48
00:03:29,220 --> 00:03:34,125
E a outra vantagem que essa abordagem traz é que

49
00:03:34,125 --> 00:03:38,855
facilita a facilidade de testar seu aplicativo porque quando você

50
00:03:38,855 --> 00:03:43,760
precisa de um objeto do qual você é dependente, em vez de passar em

51
00:03:43,760 --> 00:03:49,020
o objeto dependente você pode até criar um objeto simulado do tipo e

52
00:03:49,020 --> 00:03:53,850
, em seguida, passá-lo em para testar seu objeto específico.

53
00:03:53,850 --> 00:03:57,530
Esta separação entre o objeto dependente eo outro objeto é muito,

54
00:03:57,530 --> 00:04:02,250
muito útil como percebemos na realização de testes.

55
00:04:02,250 --> 00:04:08,886
Discutiremos isso brevemente quando olharmos para testes angulares mais tarde neste curso.

56
00:04:08,886 --> 00:04:15,850
Dependency Injection traz cerca de quatro papéis diferentes que precisamos considerar.

57
00:04:15,850 --> 00:04:20,770
Primeiro é claro o serviço que você vai fazer uso dentro

58
00:04:22,460 --> 00:04:27,160
seu componente, por exemplo, e que precisa ser injetado em.

59
00:04:27,160 --> 00:04:30,270
Segundo o cliente que é dependente do serviço

60
00:04:30,270 --> 00:04:33,380
que neste caso é o seu componente.

61
00:04:33,380 --> 00:04:39,470
Terceiro, a interface, uma vez injetado como você faz uso desse serviço.

62
00:04:39,470 --> 00:04:43,420
E finalmente o injetor, a entidade responsável por

63
00:04:43,420 --> 00:04:47,230
injetar esse objeto em seu objeto.

64
00:04:48,620 --> 00:04:50,730
Como você vai perceber em breve,

65
00:04:50,730 --> 00:04:56,540
injeção de dependência expressa angular muito na forma como ele é implementado.

66
00:04:56,540 --> 00:05:01,090
Então isso é o que facilita a separação de uma lógica de negócios

67
00:05:01,090 --> 00:05:05,040
da construção de dependência para que você possa escrever sua lógica de negócios em

68
00:05:05,040 --> 00:05:09,660
o objeto independente e, em seguida, injetá-los onde quer que seja necessário.

69
00:05:09,660 --> 00:05:13,590
E a dependência é passar para o objeto que está consumindo

70
00:05:13,590 --> 00:05:15,130
onde quer que seja necessário.

71
00:05:15,130 --> 00:05:19,760
Agora, como esta injeção é cuidada?

72
00:05:19,760 --> 00:05:24,380
Esta injecção é cuidada pelo subsistema de injecção angular.

73
00:05:24,380 --> 00:05:30,250
O subsistema de injeção angular cuida da criação desses serviços e

74
00:05:30,250 --> 00:05:35,120
, em seguida, injetá-los em seu componente onde você precisar deles.

75
00:05:35,120 --> 00:05:38,540
Assim, ele também cuida de resolver as dependências e também,

76
00:05:38,540 --> 00:05:45,030
fornecendo esses objetos para outros componentes que exigem esses objetos.

77
00:05:45,030 --> 00:05:49,180
Assim, o subsistema injetor angular fornece todos esses mecanismos para

78
00:05:49,180 --> 00:05:50,770
nós habilitar isso.

79
00:05:50,770 --> 00:05:52,450
Como realmente funciona?

80
00:05:52,450 --> 00:05:57,101
Vamos olhar para isso no exercício que se segue,

81
00:05:57,101 --> 00:06:02,527
onde usaremos um serviço que criamos nos componentes

82
00:06:02,527 --> 00:06:06,977
que projetamos para nossa aplicação Angular.

83
00:06:06,977 --> 00:06:12,169
[MÚSICA]