1
00:00:05,106 --> 00:00:08,592
Bây giờ chúng ta hãy nhìn xuyên qua tiêm phụ thuộc.

2
00:00:08,592 --> 00:00:13,874
Chích phụ thuộc chính xác là gì và nó có liên quan đến Angular như thế nào?

3
00:00:13,874 --> 00:00:17,180
Chúng ta hãy nói về điều đó tiếp theo.

4
00:00:17,180 --> 00:00:20,260
Vì vậy, chính xác là tiêm phụ thuộc là gì?

5
00:00:20,260 --> 00:00:24,600
Tiêm phụ thuộc Là một mô hình thiết kế phần mềm.

6
00:00:24,600 --> 00:00:28,890
Đây là một mô hình hữu ích cho việc thực hiện các ứng dụng mà bạn có

7
00:00:28,890 --> 00:00:35,940
một đối tượng đó là phụ thuộc vào một đối tượng khác trong một cách mà là hiệu quả.

8
00:00:35,940 --> 00:00:40,850
Bây giờ tiêm phụ thuộc, như chúng ta nhận ra, có hai phần.

9
00:00:40,850 --> 00:00:43,280
Phụ thuộc và tiêm.

10
00:00:43,280 --> 00:00:45,760
Hãy nói về sự phụ thuộc đầu tiên.

11
00:00:45,760 --> 00:00:50,750
Phụ thuộc có nghĩa là đối tượng của bạn phụ thuộc vào một đối tượng khác.

12
00:00:50,750 --> 00:00:55,400
Vì vậy, đó là lý do tại sao đó là một sự phụ thuộc giữa đối tượng của bạn và một đối tượng khác.

13
00:00:56,500 --> 00:01:02,480
Tiêm đang nói về việc đi qua sự phụ thuộc vào một đối tượng phụ thuộc.

14
00:01:02,480 --> 00:01:06,570
Vì vậy, nếu bạn có một đối tượng, nếu có một cơ chế cho

15
00:01:06,570 --> 00:01:11,410
phép bạn có thể lấy một đối tượng và sau đó làm cho nó có sẵn cho một đối tượng thứ hai, để đối

16
00:01:11,410 --> 00:01:15,360
tượng kia có thể sử dụng nó mà không nhận thức được

17
00:01:15,360 --> 00:01:19,590
chính xác như thế nào đối tượng đầu tiên được thực hiện hoặc xóa.

18
00:01:19,590 --> 00:01:24,950
Vì vậy, trong trường hợp này đối tượng phụ thuộc là không biết,

19
00:01:24,950 --> 00:01:29,050
hoặc không cần phải lo lắng về cách đối tượng khác được thực hiện.

20
00:01:29,050 --> 00:01:34,250
Nó chỉ cần sử dụng nó, bên trong đối tượng của bạn, bất cứ nơi nào nó ở.

21
00:01:35,490 --> 00:01:41,090
Chích phụ thuộc được đặt ra bởi Martin Fowler vào năm 2004.

22
00:01:41,090 --> 00:01:47,520
Và là một thiết kế phần mềm hữu ích nhấn mạnh hơn nữa vào sự phụ thuộc.

23
00:01:48,670 --> 00:01:52,070
Nếu một đối tượng phụ thuộc vào một đối tượng khác

24
00:01:52,070 --> 00:01:56,035
thì có ba cách nó có thể truy cập vào đối tượng kia.

25
00:01:56,035 --> 00:02:01,420
1, Nó có thể tạo ra các đối tượng phụ thuộc chính nó bằng cách sử dụng toán tử mới

26
00:02:01,420 --> 00:02:03,650
mà bạn đã nhìn thấy điều này trong trường hợp của các lớp học.

27
00:02:03,650 --> 00:02:08,280
Vì vậy, ví dụ, nếu bạn cần một đối tượng mới của một loại class,

28
00:02:08,280 --> 00:02:14,592
sau đó bạn tạo đối tượng đó bằng cách sử dụng mới trong các ngôn ngữ, như C++ hoặc

29
00:02:14,592 --> 00:02:20,830
Java, và thậm chí gõ script.

30
00:02:20,830 --> 00:02:26,850
Sau đó, bạn có thể sử dụng đối tượng cụ thể đó.

31
00:02:26,850 --> 00:02:30,950
Cách khác là khai báo đối tượng khác như là một biến toàn cục, và

32
00:02:30,950 --> 00:02:34,780
sau đó bạn tra cứu sự phụ thuộc bằng cách sử dụng biến toàn cục.

33
00:02:34,780 --> 00:02:39,970
Cách thứ ba để làm điều này là có sự phụ thuộc truyền vào bạn,

34
00:02:39,970 --> 00:02:41,730
bất cứ nơi nào nó là cần thiết.

35
00:02:41,730 --> 00:02:45,690
Vì vậy, nếu bạn đang phụ thuộc vào một cái gì đó khác, sau đó một cái gì đó khác sẽ được

36
00:02:45,690 --> 00:02:50,130
tiêm vào bạn bởi một hệ thống bất cứ nơi nào nó được yêu cầu.

37
00:02:50,130 --> 00:02:54,680
Vì vậy, bây giờ tùy chọn thứ ba cung cấp cho bạn rất nhiều sự linh hoạt trong cách

38
00:02:54,680 --> 00:02:57,610
mà phần mềm được thiết kế.

39
00:02:57,610 --> 00:03:00,440
Vì vậy, trong cách tiếp cận này, trong cách tiếp cận thứ ba,

40
00:03:00,440 --> 00:03:05,560
không cần mã hóa cứng sau khi phụ thuộc.

41
00:03:05,560 --> 00:03:10,470
Trong hai cách tiếp cận đầu tiên, sự phụ thuộc được mã hóa cứng trong đó,

42
00:03:10,470 --> 00:03:13,470
bởi vì bạn cần phải nhận thức đầy đủ về cách bạn tạo ra

43
00:03:13,470 --> 00:03:18,180
đối tượng mà bạn đang phụ thuộc vào, bên trong đối tượng của riêng bạn.

44
00:03:18,180 --> 00:03:19,577
Trong đối tượng thứ ba,

45
00:03:19,577 --> 00:03:24,389
bởi vì đối tượng kia đang được tiêm vào bạn bất cứ khi nào bạn cần nó,

46
00:03:24,389 --> 00:03:29,220
bạn không thực sự quan tâm nó được tạo ra như thế nào, miễn là bạn có quyền truy cập vào nó.

47
00:03:29,220 --> 00:03:34,125
Và lợi thế khác mà cách tiếp cận này mang lại là nó

48
00:03:34,125 --> 00:03:38,855
tạo điều kiện dễ dàng kiểm tra ứng dụng của bạn bởi vì khi bạn

49
00:03:38,855 --> 00:03:43,760
cần một đối tượng mà bạn đang phụ thuộc vào, thay vì đi vào

50
00:03:43,760 --> 00:03:49,020
đối tượng phụ thuộc, bạn thậm chí có thể tạo ra một đối tượng giả của loại và

51
00:03:49,020 --> 00:03:53,850
sau đó vượt qua nó trong để kiểm tra đối tượng cụ thể của bạn.

52
00:03:53,850 --> 00:03:57,530
Sự tách biệt giữa đối tượng phụ thuộc và đối tượng khác rất,

53
00:03:57,530 --> 00:04:02,250
rất hữu ích khi chúng ta nhận ra trong việc thực hiện thử nghiệm.

54
00:04:02,250 --> 00:04:08,886
Chúng ta sẽ thảo luận về vấn đề này một cách ngắn gọn khi chúng ta xem xét thử nghiệm góc cạnh sau này trong khóa học này.

55
00:04:08,886 --> 00:04:15,850
Dependency Injection mang lại khoảng bốn vai trò khác nhau mà chúng ta cần phải xem xét.

56
00:04:15,850 --> 00:04:20,770
Đầu tiên tất nhiên là dịch vụ mà bạn sẽ sử dụng trong

57
00:04:22,460 --> 00:04:27,160
thành phần của bạn ví dụ và cần phải được tiêm vào.

58
00:04:27,160 --> 00:04:30,270
Thứ hai các khách hàng đó là phụ thuộc vào các dịch vụ

59
00:04:30,270 --> 00:04:33,380
mà trong trường hợp này là thành phần của bạn.

60
00:04:33,380 --> 00:04:39,470
Thứ ba, giao diện, một khi tiêm làm thế nào để bạn sử dụng dịch vụ đó.

61
00:04:39,470 --> 00:04:43,420
Và cuối cùng là vòi phun, thực thể chịu trách nhiệm

62
00:04:43,420 --> 00:04:47,230
tiêm vật đó vào đối tượng của bạn.

63
00:04:48,620 --> 00:04:50,730
Như bạn sẽ khá sớm nhận ra,

64
00:04:50,730 --> 00:04:56,540
góc thể hiện phụ thuộc tiêm rất nhiều trong cách nó được thực hiện.

65
00:04:56,540 --> 00:05:01,090
Vì vậy, đây là những gì tạo điều kiện cho việc tách một logic kinh doanh

66
00:05:01,090 --> 00:05:05,040
từ xây dựng phụ thuộc để bạn có thể viết logic kinh doanh của bạn

67
00:05:05,040 --> 00:05:09,660
trong đối tượng độc lập và sau đó tiêm chúng bất cứ nơi nào nó được yêu cầu.

68
00:05:09,660 --> 00:05:13,590
Và sự phụ thuộc được chuyển vào đối tượng đang tiêu thụ nó

69
00:05:13,590 --> 00:05:15,130
bất cứ nơi nào nó là cần thiết.

70
00:05:15,130 --> 00:05:19,760
Bây giờ, tiêm chích này được chăm sóc như thế nào?

71
00:05:19,760 --> 00:05:24,380
Tiêm này được chăm sóc bởi subsytem tiêm góc cạnh.

72
00:05:24,380 --> 00:05:30,250
Hệ thống phụ tiêm góc sẽ chăm sóc tạo ra các dịch vụ này và

73
00:05:30,250 --> 00:05:35,120
sau đó tiêm chúng vào thành phần của bạn bất cứ nơi nào bạn cần chúng.

74
00:05:35,120 --> 00:05:38,540
Vì vậy, nó cũng chăm sóc giải quyết các phụ thuộc và cũng có thể,

75
00:05:38,540 --> 00:05:45,030
cung cấp các đối tượng cho các thành phần khác mà yêu cầu các đối tượng này.

76
00:05:45,030 --> 00:05:49,180
Vì vậy, hệ thống con vòi phun góc cung cấp tất cả các cơ chế này

77
00:05:49,180 --> 00:05:50,770
để chúng ta có thể kích hoạt điều này.

78
00:05:50,770 --> 00:05:52,450
Làm thế nào để nó thực sự hoạt động?

79
00:05:52,450 --> 00:05:57,101
Chúng tôi sẽ xem xét điều đó trong bài tập sau,

80
00:05:57,101 --> 00:06:02,527
nơi chúng tôi sẽ sử dụng một dịch vụ mà chúng tôi tạo ra Trong các thành phần

81
00:06:02,527 --> 00:06:06,977
mà chúng tôi thiết kế cho ứng dụng Angular của chúng tôi.

82
00:06:06,977 --> 00:06:12,169
[ NHẠC]