1
00:00:00,000 --> 00:00:05,106
[MUSIC]

2
00:00:05,106 --> 00:00:08,592
Echemos ahora un vistazo penetrante a la inyección de dependencia.

3
00:00:08,592 --> 00:00:13,874
¿Qué es exactamente la inyección de dependencia y cómo es relevante para Angular?

4
00:00:13,874 --> 00:00:17,180
Hablemos de eso a continuación.

5
00:00:17,180 --> 00:00:20,260
Entonces, ¿qué es exactamente la inyección de dependencia?

6
00:00:20,260 --> 00:00:24,600
Inyección de dependencia Es un patrón de diseño de software.

7
00:00:24,600 --> 00:00:28,890
Este es un patrón que es útil para implementar aplicaciones donde tiene

8
00:00:28,890 --> 00:00:35,940
un objeto que depende de otro objeto de una manera que es eficiente.

9
00:00:35,940 --> 00:00:40,850
Ahora la Inyección de Dependencia, como nos damos cuenta, tiene dos partes.

10
00:00:40,850 --> 00:00:43,280
Dependencia e inyección.

11
00:00:43,280 --> 00:00:45,760
Hablemos primero de la dependencia.

12
00:00:45,760 --> 00:00:50,750
La dependencia significa que su objeto depende de otro objeto.

13
00:00:50,750 --> 00:00:55,400
Entonces, es por eso que eso es una dependencia entre su objeto y otro objeto.

14
00:00:56,500 --> 00:01:02,480
Injection está hablando de pasar la dependencia a un objeto dependiente.

15
00:01:02,480 --> 00:01:06,570
Entonces, si tienes un objeto, si hay un mecanismo que permite

16
00:01:06,570 --> 00:01:11,410
puedes tomar un objeto y luego ponerlo a disposición de un segundo objeto, por lo que

17
00:01:11,410 --> 00:01:15,360
que el otro objeto pueda hacer uso de él sin tener en cuenta

18
00:01:15,360 --> 00:01:19,590
exactamente cómo se implementa o se borra el primer objeto.

19
00:01:19,590 --> 00:01:24,950
Entonces, en este caso, el objeto que es dependiente no es consciente,

20
00:01:24,950 --> 00:01:29,050
o no necesita preocuparse por cómo se implementa el otro objeto.

21
00:01:29,050 --> 00:01:34,250
Solo necesita hacer uso de él, dentro de su objeto, dondequiera que esté.La inyección de dependencia

22
00:01:35,490 --> 00:01:41,090
fue acuñada por Martin Fowler en 2004.

23
00:01:41,090 --> 00:01:47,520
Y es un diseño de software útil que enfatica aún más en la dependencia.

24
00:01:48,670 --> 00:01:52,070
Si un objeto depende de otro objeto

25
00:01:52,070 --> 00:01:56,035
hay tres formas en que puede acceder al otro objeto.

26
00:01:56,035 --> 00:02:01,420
1, Puede crear el objeto dependiente en sí mediante el uso del nuevo operador

27
00:02:01,420 --> 00:02:03,650
que ha visto esto en el caso de las clases.

28
00:02:03,650 --> 00:02:08,280
Entonces, por ejemplo, si necesita un nuevo objeto de un tipo de clase,

29
00:02:08,280 --> 00:02:14,592
entonces crea ese objeto usando el nuevo dentro de lenguajes, como C ++ o

30
00:02:14,592 --> 00:02:20,830
Java, e incluso escribe script.

31
00:02:20,830 --> 00:02:26,850
Entonces, puede hacer uso de ese objeto en particular.

32
00:02:26,850 --> 00:02:30,950
La otra forma es declarar el otro objeto como una variable global, y

33
00:02:30,950 --> 00:02:34,780
luego busca la dependencia usando la variable global.

34
00:02:34,780 --> 00:02:39,970
La tercera forma de hacer esto es tener la dependencia pasada a ti,

35
00:02:39,970 --> 00:02:41,730
donde sea que sea necesaria.

36
00:02:41,730 --> 00:02:45,690
Así que si dependes de otra cosa, entonces esa otra cosa será

37
00:02:45,690 --> 00:02:50,130
inyectada en ti por un sistema donde sea que sea requerido.

38
00:02:50,130 --> 00:02:54,680
Por lo tanto, ahora la tercera opción le da mucha flexibilidad en la forma

39
00:02:54,680 --> 00:02:57,610
que el software está diseñado.

40
00:02:57,610 --> 00:03:00,440
Entonces, en este enfoque, en el tercer enfoque,

41
00:03:00,440 --> 00:03:05,560
no hay necesidad de codificación dura después de la dependencia.

42
00:03:05,560 --> 00:03:10,470
En los dos primeros enfoques, la dependencia está codificada allí,

43
00:03:10,470 --> 00:03:13,470
porque necesita ser plenamente consciente de cómo crea

44
00:03:13,470 --> 00:03:18,180
el objeto del que depende, dentro de su propio objeto.

45
00:03:18,180 --> 00:03:19,577
En el tercer objeto,

46
00:03:19,577 --> 00:03:24,389
porque el otro objeto se está inyectando en ti siempre que lo necesites,

47
00:03:24,389 --> 00:03:29,220
realmente no te importa cómo se crea, siempre y cuando tengas acceso a él.

48
00:03:29,220 --> 00:03:34,125
Y la otra ventaja que este enfoque trae consigo es que

49
00:03:34,125 --> 00:03:38,855
facilita la facilidad de probar su aplicación porque cuando

50
00:03:38,855 --> 00:03:43,760
necesita un objeto del que depende, en lugar de pasar

51
00:03:43,760 --> 00:03:49,020
el objeto dependiente, incluso podría crear un objeto simulado del tipo y

52
00:03:49,020 --> 00:03:53,850
luego pasarlo en para probar su objeto específico.

53
00:03:53,850 --> 00:03:57,530
Esta separación entre el objeto dependiente y el otro objeto es muy,

54
00:03:57,530 --> 00:04:02,250
muy útil como nos damos cuenta en la realización de pruebas.

55
00:04:02,250 --> 00:04:08,886
Discutiremos esto brevemente cuando veamos las pruebas angulares más adelante en este curso.

56
00:04:08,886 --> 00:04:15,850
Dependency Injection trae cuatro roles diferentes que debemos considerar.

57
00:04:15,850 --> 00:04:20,770
Primero, por supuesto, es el servicio que vas a hacer uso dentro de

58
00:04:22,460 --> 00:04:27,160
tu componente, por ejemplo, y que necesita ser inyectado en.

59
00:04:27,160 --> 00:04:30,270
En segundo lugar el cliente que depende del servicio

60
00:04:30,270 --> 00:04:33,380
que en este caso es su componente.

61
00:04:33,380 --> 00:04:39,470
Tercero, la interfaz, una vez inyectada cómo hacer uso de ese servicio.

62
00:04:39,470 --> 00:04:43,420
Y finalmente el inyector, la entidad responsable de

63
00:04:43,420 --> 00:04:47,230
inyectar ese objeto en su objeto.

64
00:04:48,620 --> 00:04:50,730
Como pronto se dará cuenta, la inyección de dependencia express angular

65
00:04:50,730 --> 00:04:56,540
en gran medida en la forma en que se implementa.

66
00:04:56,540 --> 00:05:01,090
Así que esto es lo que facilita la separación de una lógica de negocio

67
00:05:01,090 --> 00:05:05,040
de la construcción de dependencias para que pueda escribir su lógica de negocio en

68
00:05:05,040 --> 00:05:09,660
el objeto independiente y luego inyectarlos donde sea necesario.

69
00:05:09,660 --> 00:05:13,590
Y la dependencia se pasa al objeto que la consume

70
00:05:13,590 --> 00:05:15,130
donde sea que se necesite.

71
00:05:15,130 --> 00:05:19,760
Ahora, ¿cómo se cuida esta inyección?

72
00:05:19,760 --> 00:05:24,380
Esta inyección es atendida por el subsistema de inyección angular.

73
00:05:24,380 --> 00:05:30,250
El subsistema de inyección angular se encarga de la creación de estos servicios y

74
00:05:30,250 --> 00:05:35,120
, a continuación, inyectarlos en su componente donde los necesite.

75
00:05:35,120 --> 00:05:38,540
Por lo tanto, también se encarga de resolver las dependencias y también,

76
00:05:38,540 --> 00:05:45,030
proporcionar esos objetos a otros componentes que requieren estos objetos.

77
00:05:45,030 --> 00:05:49,180
Así que el subsistema de inyector angular proporciona todos estos mecanismos para

78
00:05:49,180 --> 00:05:50,770
nosotros para habilitar esto.

79
00:05:50,770 --> 00:05:52,450
¿Cómo funciona realmente?

80
00:05:52,450 --> 00:05:57,101
Lo veremos en el ejercicio que sigue,

81
00:05:57,101 --> 00:06:02,527
donde usaremos un servicio que creamos En los componentes

82
00:06:02,527 --> 00:06:06,977
que diseñamos para nuestra aplicación Angular.

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