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

2
00:00:05,106 --> 00:00:08,592
دعونا الآن نلقي نظرة ثاقبة على حقن التبعية.

3
00:00:08,592 --> 00:00:13,874
ما هو بالضبط حقن التبعية وكيف هو ذات الصلة الزاوي؟

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
الحقن يتحدث عن تمرير التبعية إلى كائن تابع.

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
يتم أخذ هذا الحقن الرعاية من قبل subsytem حقن الزاوي.

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
التي قمنا بتصميمها لتطبيق Angular الخاص بنا.

83
00:06:06,977 --> 00:06:12,169
[ موسيقى]