hotchpotch/wikipedia-multilingual-ir-pairs huggingface dataset:
إجلاء مواطني جبل طارق في أثناء الحرب العالمية الثانية الدار البيضاء (كازابلانكا)
في أوائل شهر يونيو من عام 1940 نُقل بحريًّا نحو 13,500 شخص مُجلًى من جبل طارق إلى الدار البيضاء في المغرب الفرنسية، لكن بعد استسلام فرنسا للألمانيين في نفس ذلك الشهر، استشعرت حكومة فيشي الفرنسية الموالية للألمانيين الحرج من وجود مواطني جبل طارق في الدار البيضاء، فأخذت تتحين الفرصة لترحيلهم. بعد ذلك بوقت قليل سنحت الفرصة، حين وصلت 15 سفينة بضائع بريطانية تحت قيادة الكومودور كرايتون، إذ كانت تعيد 15 ألف جندي فرنسي إلى موطنهم، بعد أن اكتمل إجلاؤهم عن دونكيرك. ما إن اكتمل إنزال الجنود إلى الميناء، احتُجزت السفن إلى حين موافقة قيادتها على ترحيل مواطني جبل طارق. لم يكن كرايتون قادرًا على الحصول على تصريح بتنظيم سفنه وإعادة تعبئتها (وكانت أوامر الأميرالية البريطانية تحظر حمل مَن أُجلي)، لكنه على الرغم من هذا عندما رأى جموع المدنيين تتدفق عبر أحواض السفن، فتح أبوابه لهم ليصعدوا. في يوم 3 يوليو من عام 1940، شن أسطول البحر الأبيض المتوسط البريطاني هجومًا على المرسى الكبير، ودمر عددًا من السفن الحربية الفرنسية، ليحول بينها وبين أن تُسلَّم إلى الألمانيين. أودى الهجوم بأكثر من ألف بحار فرنسي، وأدى إلى توتر كبير بين الجانبين الفرنسي والبريطاني، توتر كان جليًّا تمامًا حين أجبر جنود فرنسيون عائلات من مدنيِّي جبل طارق في مركز عسكري على الجلاء بما يسعهم حمله وحسب، تاركين كثيرًا من ممتلكاتهم خلفهم.
إجلاء مواطني جبل طارق في أثناء الحرب العالمية الثانية عودة إلى جبل طارق
عندما وصل المدنيون إلى جبل طارق، لم يأذن لهم الحاكم السير كلايف ليدل في النزول إلى أرض المرسى، إذ خشي أنهم إن عادوا إلى صخرة جبل طارق، فسيستحيل إجلاؤهم مرة أخرى تقريبًا. اجتمعت الحشود في ساحة جون ماكنتوش، مطالبين بالإذن للمدنيين العائدين في النزول. بعد تلقي تعليمات من لندن، سُمح للمدنيين بالنزول، على شرط أن يعودوا متى تصل سفن أخرى لترحّلهم مرة ثانية عن صخرة جبل طارق، وبالفعل بحلول يوم 13 يوليو اكتملت إعادة المدنيين المرحَّلين إلى جبل طارق.
لودوفيكو فيراري
لودوفيكو فيراري (بالإيطالية: Lodovico Ferrari)‏ هو عالم رياضيات إيطالي يذكر أساسا بفضل عمله في المعادلات من الدرجة الرابعة.
الليبرالية في تايوان
يقدم هذا المقال نظرة عامة حول الليبرالية في تايوان. ويقتصر على الأحزاب الليبرالية التي تحظى بتأييد كبير، والتي أثبتت نجاحها في الأساس بالتمثيل في مجلس اليوان التشريعي (البرلمان).
الليبرالية في تايوان الأحزاب الليبرالية في تايوان
الحزب الديمقراطي التقدمي (دي بّي بّي) هو حزب ليبرالي اجتماعي وتقدمي من تيار الوسط في تايوان. وقد نشأ من حركة تانغواي التي تشكلت في سبعينيات القرن العشرين لمعارضة حزب الكومينتانغ الحاكم (الحزب القومي الصيني). ومع ذلك، فإن الحزب الديمقراطي التقدمي يضم جناحًا محافظًا داخل الحزب بقواعد داعمة من جنوب تايوان، والتي تمثل أيضًا قاعدة الناخبين للحزب الديمقراطي التقدمي [بحاجة إلى توضيح]، بينما يوجد أجنحة ليبرالية اجتماعية أكثر في مناطق تايبيه المتروبولية. والآن أصبح لدى الحزب الديمقراطي التقدمي 68 عضوًا في مجلس اليوان التشريعي، مع انضمام عضو مستقل لكتلة الحزب الديمقراطي التقدمي.
الليبرالية في تايوان الأحزاب الليبرالية في تايوان
اتحاد التضامن التايواني (تي إس يو) هو حزب تقدمي يتّسم بشكل أساسي بنزعته القومية التايوانية، ويستمد عضويته من حزب الكومينتانغ المعتدل السابق والأحزاب ذات التوجه التايواني المهمشة وأنصار الحزب الديمقراطي التقدمي المستائين من موقف الحزب المعتدل إزاء مسألة سيادة تايوان. تُعتبر صِبغته الليبرالية موضعًا للشكّ [بحاجة إلى الاقتباس]، رغم أنه جزء من الحزب الديمقراطي التقدمي الداعم لحركة استقلال تايوان وتحالف الخضر. خسر حزب اتحاد التضامن التايواني كل مقاعده في انتخابات عام 2016.
حزب القوة الجديدة (إن بّي بّي) هو حزب ليبرالي اجتماعي وتقدميّ يهدف إلى إعادة صياغة دستور جمهورية الصين وتحقيق القومية التايوانية، فاز حزب القوة الجديدة بخمسة مقاعد في الانتخابات التشريعية لعام 2016، وقد انخفض تمثيلها الوطني حتى ثلاثة مقاعد.
ترتبط أغلب الأحزاب الليبرالية الحديثة في تايوان بالنزعة القومية التايوانية، فضلًا عن المواقف الليبرالية المتعلقة بالقضايا الاجتماعية كدعم إلغاء عقوبة الإعدام وحقوق المثليين.
تمرد كريت (1866–1869)
التمرد الكريتي 1866–1869 أو الثورة الكريتية العظمى هو انتفاضة دامت ثلاث سنوات في جزيرة كريت ضد الحكم العثماني، وهي ثالث الثورات من ناحية الضخامة ضمن سلسلة التمردات الكريتية التي وقعت بين نهاية حرب الاستقلال الكريتية عام 1830 وتأسيس دولة كريت المستقلة عام 1898.
تمرد كريت (1866–1869) خلفية
انتفض المسيحيون الكريتيون إلى جانب اليونانيين خلال الثورة اليونانية عام 1821، لكن على الرغم من النجاح الذي حققته الثورة اليونانية في الأرياف، احتفظ العثمانيون بـ 4 بلدات محصنة على الساحل الشمالي (وهي خانية وريثيمنو وكاندية وآغيوس نيكولاوس) واستعاد العثمانيون الجزيرة بحلول عام 1828، فأصبحت تابعة لإقليم مصر (كان محمد علي والي مصر التابعة للإمبراطورية العثمانية، لكنه كان حاكمًا قويًا وشبه مستقل ويملك جيشه الخاص). في عام 1840، أُعيدت كريت إلى الحكم العثماني المباشر، تلا ذلك انتفاضة فاشلة عام 1841 نادت بالاتحاد مع اليونان المستقلة. استطاعت انتفاضة ثانية عام 1858 توفير بعض الامتيازات للجزيرة، مثل حقها في حمل السلاح والمساواة بين المسيحيين والمسلمين في العبادة، وتأسيس مجالس الشيوخ المسيحية المختصة بالتعليم والقانون العرفي وقانون الأسرة. لم ترضِ تلك التنازلات المجتمع الإسلامي هناك، بينما طالب المسيحيون بالمزيد من الامتيازات تزامنًا مع احتفاظهم بهدفهم النهائي، وهو الاتحاد مع اليونان.
تمرد كريت (1866–1869) التمرد
تزامنًا مع ازدياد التوترات ضمن الجزيرة، والعرائض العديدة التي رُفعت للسلطان لكن دون جدوى، شُكلت الفرق المسلحة، وأُعلن عن التمرد رسميًا في الحادي والعشرين من شهر أغسطس عام 1866. جلب التمرد على الفور تعاطفًا في اليونان مع المتمردين، وفي باقي أنحاء أوروبا أيضًا. تمكّن المتمردون في البداية من السيطرة على معظم المنطقة الداخلية، لكن كالعادة، ظلّت البلدات الأربع المحصنة على الساحل الشمالي وبلدة إيرابترا في الجنوب بيد العثمانيين.
تمرد كريت (1866–1869) التمرد
جلبت إحدى الحوادث بشكل خاص ردود فعل قوية بين دوائر الليبراليين في أوروبا الغربية، وهي «هولوكوست أركادي». وقع هذا الحدث في شهر نوفمبر من عام 1866، حاصرت حينها كتيبة عثمانية ضخمة دير أركادي، الذي كان معقل المتمردين. احتوى الدير 259 فردًا للدفاع عنه، بالإضافة إلى أكثر من 700 طفل وامرأة لجؤوا إلى الدير. عقب عدة أيامٍ من القتال الدامي، اقتحم العثمانيون الدير. في تلك اللحظة، أشعل رئيس الدير النيران في البارود المخزّن ضمن خزائن الدير، ما أدى إلى مقتل الثوار والنساء والأطفال الذين التجؤوا هناك. وفقًا لما أورده الكاتب الأمريكي والقنصل ويليام ستيلمان وآخرون على التيليغراف المُخترع حديثًا حينها، سبب هذا الحدث صدمة كبرى في باقي أنحاء أوروبا وأميريكا الشمالية، وأنقص من شرعية الحكم العثماني.
بحلول منتصف القرن التاسع عشر، حكم العثمانيون جزيرة كريت لأكثر من قرنين من الزمن، على الرغم من الانتفاضات الدامية والمتكررة من طرف المتمردين الكريتيين. انتفض الكريتيون ضد الاحتلال العثماني خلال حرب الاستقلال اليونانية، أقر بروتوكول لندن عام 1830 عدم إمكانية ضم الجزيرة إلى دولة اليونان الناشئة حديثًا.
تمرد كريت (1866–1869) التمرد
في الثلاثين من شهر مارس عام 1856، أجبرت معاهدة باريس السلطانَ العثماني على تطبيق ما يُعرف بـ الخط الهمايوني، والذي منح المساواة الدينية والمدنية للمسيحيين والمسلمين. ترددت السلطات العثمانية في تطبيق أي إصلاحات في كريت. قبل تحوّل الكثيرين إلى الديانة الإسلامية (تحوّل معظم المسيحيين إلى الإسلام ثم رجعوا عنه)، حاولت الإمبراطورية إبطال حرية العقيدة. ازداد سخط الكريتيين إثر فرض ضرائب جديدة وحظر تجوال. في شهر أبريل من عام 1858، التقى خمسة آلاف كريتي في بوتسوناريا. وأخيرًا في السابع من شهر يوليو عام 1858، أُعلن عن مرسوم إمبراطوري يمنح الكريتيين امتيازات في الشؤون الدينية والقضائية والمالية. كان خرق الخط الهمايوني أحد الدوافع الكبرى وراء تمرد عام 1866.
مقراب كوييت
كان تلسكوب كوييت QUIET telescope تجربة لخدمة علم الفلك بغرض دراسة استقطاب إشعاع الأمواج الصغرية للخلفية الكونية (CMB). يعني اسم الاختصار QUIET تجربة المصور Q/U Imaging ExperimenT.
وذكر الحرفين Q/U يعني قدرة التلسكوب QUIET على قياس القيمتين Q و U
لـإحداثيات شعاع ستوكس في نفس الوقت . بني التلسكوب على ارتفاع 5.080 متر في أرض مرصد للانو دي شانجاناتور على جبل أنديز في تشيلي.
وبدأ التلسكوب الرصد في أواخر عام 2008 وانهى قياساته في ديسمبر 2010
.
مقراب كوييت
كانت تجربة
QUIET
نتيجة تعاون دولي بغرض التعمق في معرفة «الاستقطاب الغير متساوي للأشعة الكونية المكرويفية» CAPMAP
و نتائج مصور الأشعة الخلفية الكونية (CBI) ونتائج التجربة الدولية كواد. هذا التعاون الدولي المشترك فيه 7 معاهد دولية من الولايات المتحدة، معهد كاليفورنيا للتقنية ، وجامعة شيكاغو ، وجامعة كولومبيا ، ومعمل جيت بروبلشن ، وجامعة ميامي و جامعة برنستون ، وجامعة ستانفورد ، و4 مجموعات علماء من أوروبا، جامعة مانشستر بانجلترا ،و معهد ماكس بلانك لعلم الفلك الراديوي الألماني وجامعة أوسلو وجامعة أكسفورد ومجموعة علماء من اليابان ، وبعض المعاهد الأخرى المتخصصة في فيزياء علم الفلك.
.
مقراب كوييت مقدمة
قام تلسكوب كوييت بقياس إستقطاب إشعاع الأمواج الصغرية للخلفية الكونية. هذا الاستقطاب ينشق إلى مركبتين : نمط إي الذي يمثل مركبة التدرج، و نمط ب التي تعطي مركبة التدوير الضوئي. وتعتبر المركبات نمط ب تتشكل من التذبذبات التي حدثت في البدء بسبب التضخم الكوني ، و من انحناء أشعة الخلفية الكونية المكروني CMB بسبب تأثير عدسات الجاذبية التي تتعرض لها الأشعة وهي في طريقها إلينا. حتى عام 2008 اكتشف النمط إي E-modes فقط. وانشئ تلسكوب كوييت QUIET بغرض رصد وقياس المركبات من نمط ب للاستقطاب لأول مرة ، وللحصول على قياسات أكثر دقة للاستقطاب نمط إي.
وكان من المتوقع أن تكون الأنماط ب اضعف كثيرا من الإنماط إي ، حيث أنها تتكون من تأثيرات أشد كثيرا. وكانت النسبة بين النمط إب والنمط ب لا تزال مجهولة ، وبمعرفة أقل قيمة يمكن قياسها لها يمكن استخدامه كمقياس لحساسية تلسكوب CMB . وكان مقدرا أن بالنسبة إلى تلسكوب كوييت QUIET ستكون r=0.009, وهي تؤول إلى مقياس الطاقة لـ التضخم الكوني حيث يبلغ نحو  جيجا إلكترون فولت.
مقراب كوييت مقدمة
قياسات تلسكوب كوييت لقوة طيف إشعاع الأمواج الصغرية للخلفية الكونية كانت مصممة لتكون بين تعدد أقطاب multipoles بين نحو 40 إلى 2.500
وأن تجرـُى في مقطع في السماء معروف بأنه يحوي شوائب قليلة
.
مقراب كوييت النتائج
المرحلة الأولى لقياس طيف قوة لمدة 10.000 ساعة عند تردد 43 جيجا هيرتز في حيز متعدد أقطاب ℓ = 25–475. كان النمط إي متوافقا مع نموذج Lambda-CDM للبنية الكونية . ولم يمكن رصد طيف النمط ب . وفي المرحلة الثانية للقياس تمت عند 95 جيجا هيرتز .
واستخدم طيف قوة بين ℓ = 25 إلى 975 للحصول على نسبة الموتر إلى قيمة المجال tensor-to-scalar .(أنظر تطبيقات في علم الفلك).
مقراب كوييت نتائج مارس 2013 وفبراير 2015
أصدرت مجموعة العلماء الأوربيين القائمين بمتابعة قياسات بلانك (مرصد فضائي) في مارس 2013 ) كل ما قام المرصد بتصويره من الفضاء لأشعة الخلفية الكونية.

وترجح خارطة السماء المسجلة للكون أن الكون اقدم قليلا عما سبق تعيينة . فالخارطة تبدي تذبذبات دقيقة لدرجة الحرارة في أعماق الكون عندما كان عمر الكون نحو 370,000 سنة. الصور تبين بقع حرارية ظهرت خلال زمن أقل كثيرا من الثانية ى لنشأة الكون (10−30) ثانية. تلك البقع هي المتسببة في وجود الشبكة الكونية اليوم من تجمعات مجرات والمادة المظلمة. واعتمادا على بيانات عام 2013 يحوي الكون 4.9% من المادة العادية، و26.8% المادة المظلمة و68.3% طاقة مظلمة.
وفي فبراير2015
اصدر مرصد بلانك الفضائي بيانات جديدة تبين أن عمر الكون 13.799 ± 0.021 مليار سنة ، كما قام مرصد بلانك بقياس ثابت هابل وقدره بـ 67.74 ± 0.46 (km/s)/Mpc.
حقن التبعية
في هندسة البرمجيات، يعد حقن التبعية (بالإنجليزية: dependency injection) تقنية يتلقى فيها كائن كائنات أخرى يعتمد عليها. تسمى هذه الكائنات الأخرى التبعيات.
في العلاقة النموذجية «باستخدام» يسمى الكائن المتلقي عميل (بالإنجليزية: Client) ويسمى الكائن الذي تم تمريره (أي تم حقنه) خدمة (بالإنجليزية: Service). يمكن أن يكون الكود الذي ينقل الخدمة إلى العميل أنواعًا كثيرة ويسمى الحاقن. بدلاً من تحديد العميل للخدمة التي سيستخدمها، يخبر الحاقن العميل بالخدمة التي سيستخدمها. تشير «الحقن» إلى تمرير التبعية (خدمة) إلى الكائن (العميل) الذي قد يستخدمها.
الخدمة تصبح جزءاً من حالة العميل. يعد تمرير الخدمة إلى العميل، بدلاً من السماح للعميل ببناء الخدمة أو العثور عليها، شرطاً أساسياً للنمط.
النية من حقن التبعية هو تحقيق فصل الاهتمامات الخاصة بالبناء واستخدام الكائنات. يمكن أن يؤدي ذلك إلى زيادة إمكانية القراءة وإعادة استخدام الكود.
حقن التبعية
حقن التبعية هو شكل من أشكال التقنية الأوسع لعكس التحكم. لا يجب على العميل الذي يريد استدعاء بعض الخدمات معرفة كيفية إنشاء هذه الخدمات. بدلاً من ذلك، يفوض العميل مسؤولية توفير خدماته للكود الخارجي (الحاقن). لا يُسمح للعميل باستدعاء كود الحاقن ؛ الحاقن هو الذي يبني الخدمات. ثم يقوم الحاقن بحقن (تمرير) الخدمات في العميل التي قد تكون موجودة بالفعل أو قد يتم بناؤها بواسطة الحاقن. ثم يستخدم العميل الخدمات. هذا يعني أن العميل لا يحتاج إلى معرفة الحاقن، وكيفية إنشاء الخدمات، أو حتى الخدمات الفعلية التي يستخدمها. يحتاج العميل فقط إلى معرفة الواجهات الجوهرية للخدمات لأن هذه تحدد كيفية استخدام العميل للخدمات. وهذا يفصل مسؤولية «الاستخدام» (بالإنجليزية: "use") عن مسؤولية «البناء» (بالإنجليزية: "construction").
حقن التبعية نوايا
إنشاء كائنات مباشرة داخل الصنف أمر غير مرن لأنه يلزم الصنف بكائنات معينة ويجعل من المستحيل تغيير التمثيل الفوري بشكل مستقل عن الصنف (دون الحاجة إلى تغيير). يوقف الصنف عن إمكانية إعادة استخدامه.
إذا كانت هناك حاجة إلى كائنات أخرى، ويجعل من الصعب اختبار الصنف لأنه لا يمكن استبدال الكائنات الحقيقية بكائنات وهمية.
لم يعد الصنف مسؤول عن إنشاء الكائنات التي يتطلبها، ولا يتعين عليه تفويض إنشاء مثيل لكائن مصنع كما هو الحال في نمط تصميم.
انظر أيضًا صنف UML ومخطط التسلسل أدناه.
حقن التبعية نظرة عامة
حقن التبعية يفصل إنشاء تبعيات العميل عن سلوك العميل، والذي يسمح لتصاميم البرنامج أن تكون مقترنة بشكل متساهل ومتابعة انعكاس التبعية ومبادئ المسؤولية الواحدة. يتناقض بشكل مباشر مع نمط محدد مواقع الخدمة، والذي يسمح للعملاء بمعرفة النظام الذي يستخدمونه للعثور على التبعيات. الحقن، الوحدة الأساسية لحقن التبعية، ليست آلية جديدة أو مخصصة. يعمل بنفس الطريقة التي يعمل بها «تمرير المعلمة».
بالإشارة إلى «تمرير المعلمة» حيث أن الحقن يحمل ضمناً إضافياً أنه يتم القيام به لعزل العميل عن التفاصيل.
إن الحقن يتعلق أيضًا بما يتحكم في المرور (وليس العميل) مطلقًا وهو مستقل عن كيفية تحقيق التمرير، سواء عن طريق تمرير مرجع أو قيمة يشمل حقن التبعية أربعة أدوار:
أي كائن يمكن استخدامه يمكن اعتباره خدمة. يمكن اعتبار أي كائن يستخدم كائنات أخرى عميلاً . لا علاقة للأسماء بماهية الكائنات وكل شيء يتعلق بالدور الذي تلعبه الكائنات في أي حقن.
حقن التبعية نظرة عامة
الواجهات هي الأنواع التي يتوقع العميل تبعياتها. المشكلة هي ما يجعلها متاحة. قد تكون بالفعل أنواع من الواجهة يتم تنفيذها بواسطة الخدمات ولكن قد تكون أيضًا أصناف مجردة أو حتى الخدمات نفسها على الرغم من أن هذا الأخير قد ينتهك DIP ويضحي بفك الارتباط الديناميكي الذي يتيح الاختبار. يتطلب فقط ألا يعرف العميل هويته وبالتالي لا يتعامل معه على أنه ملموس، على سبيل المثال من خلال إنشائها أو توسيعها.
حقن التبعية نظرة عامة
يجب ألا يكون لدى العميل معرفة ملموسة بالتنفيذ المحدد لتبعياته. يجب أن يعرف فقط اسم الواجهة وواجهة برمجة التطبيقات (بالإنجليزية: API). ونتيجة لذلك، لن يحتاج العميل إلى التغيير حتى إذا تغير ما وراء الواجهة. ومع ذلك، إذا تمت إعادة هيكلة الواجهة من صنف إلى نوع واجهة (أو العكس) فسيحتاج العميل إلى إعادة التجميع هذا مهم إذا تم نشر العميل والخدمات بشكل منفصل. هذا الاقتران المؤسف هو واحد لا يمكن حله بالتبعية. يقدم الحاقن الخدمات إلى العميل. في كثير من الأحيان، يقوم أيضًا بإنشاء العميل. قد يربط الحاقن معًا رسمًا بيانيًا معقدًا جدًا للكائن عن طريق معاملة كائن مثل العميل وبعد ذلك كخدمة لعميل آخر. قد يكون الحاقن. في الواقع العديد من الكائنات تعمل معًا ولكن قد لا يكون العميل. قد تتم الإشارة إلى الحاقن بأسماء أخرى مثل: المجمع، الموفر، الحاوية، المصنع، البناء، الربيع، كود البناء، أو الرئيسي.
حقن التبعية نظرة عامة
يمكن تطبيق حقن التبعية كنظام، واحد يطلب من جميع الكائنات صنف البناء والسلوك. يمكن أن يؤدي الاعتماد على إطار عمل حقن التبعية بالقيام بالإنشاء إلى حظر استخدام الكلمة المفتاحية "new"، أو بشكل أقل صرامة، السماح بالبناء المباشر لعناصر القيمة فقط.
يعد عكس التحكم (IoC) أكثر عمومية من حقن التبعية. ببساطة، يعني انعكاس التحكم السماح لكود آخر بالاتصال بك بدلاً من الإصرار على إجراء الاستدعاء. مثال على عكس التحكم بدون حقن التبعية هو نمط طريقة القالب. هنا، يتم تحقيق تعدد الأشكال من خلال التصنيف الفرعي، أي الميراث. يطبق حقن التبعية انعكاس التحكم من خلال التكوين، لذلك غالبًا ما يكون مطابقًا لنمط الإستراتيجية، ولكن في حين أن نمط الإستراتيجية مخصص للتبعيات لتكون قابلة للتبادل طوال عمر الكائن، في حقن التبعية، قد يتم استخدام مثيل واحد فقط من التبعية هذا لا يزال يحقق تعدد الأشكال، ولكن من خلال التفويض والتكوين.
أطر التطبيقات مثل CDI وتنفيذها مثل Weld وسبرينغ و Guice واطار عمل بلاي و Salta و Glassfish HK2 و Dagger وإطار التوسعة المدار (MEF) تدعم حقن التبعية ولكن غير الزامية للقيام بحقن التبعية.
حقن التبعية نظرة عامة
يمكن استخدام حقن التبعية لتجسيد تكوين النظام في ملفات التكوين، مما يسمح بإعادة تكوينالنظام دون إعادة التجميع. يمكن كتابة تكوينات منفصلة التي تتطلب تنفيذات مختلفة للمكوّن. وهذا يشمل، على سبيل المثال لا الحصر، الاختبار.
نظرًا لأن حقن التبعية لا يتطلب أي تغيير في سلوك الكود، يمكن تطبيقه على الكود القديم باعتباره إعادة هيكلة الكود.. والنتيجة هي عملاء أكثر استقلالية وأكثر سهولة في اختبار الوحدة في العزل باستخدام(بالإنجليزية: البذرة) كائنات وهمية التي تحاكي كائنات أخرى ليست تحت الاختبار. غالبًا ما تكون سهولة الاختبار هذه أول فائدة ملحوظة عند استخدام حقن التبعية.
يسمح حقن التبعية للعميل بإزالة جميع ما هو معروف بالنسبة للتطبيق المحدد الذي يحتاج إلى استخدامه. هذا يساعد على عزل العميل من تأثير تغييرات التصميم والعيوب. يعزز قابلية إعادة الاستخدام والاختبار وقابلية الصيانة.
يسمح حقن التبعية بالتطويرالمتزامن أو المستقل. يمكن لمطورين اثنين بشكل مستقل تطوير أصناف تستخدم بعضها البعض، كل ما تحتاجه هو فقط معرفة الواجهة التي ستتواصل من خلالها الاصناف. غالبًا ما يتم تطوير البرنامج المساعدة من خلال متاجر الجهات الخارجية التي لا تتحدث أبدًا مع المطورين الذين أنشؤوا المنتج الذي يستخدم البرنامج المساعد.
حقن التبعية هيكل (بناء)
فيUML الرسم التخطيطي لصنف أعلاه، لا يقوم صنف Client الذي يتطلب كائنات ServiceA و ServiceB بإنشاء صنفيServiceA1 و ServiceB1 مباشرة. بدلاً من ذلك، يقوم صنف Injector بإنشاء الكائنات وحقنها في Client، مما يجعل Client مستقلًا عن كيفية إنشاء الكائنات (أي الأصناف الملموسة التي يتم إنشاء مثيل لها). يوضح الرسم التخطيطي لتسلسل UML تفاعلات وقت التشغيل يقوم كائن Injector بإنشاء كائنات ServiceA1 و ServiceB1. بعد ذلك، يقوم Injector بإنشاء كائن Client وإدخال كائنات ServiceA1 و ServiceB1.
حقن التبعية أمثلة
في مثال جافا التالي، يحتوي صنف على خدمة متغير عضو تمت تهيئته بواسطة مُنشئ.
يتحكم العميل في تنفيذ الخدمة المستخدمة ويتحكم في بنائها. في هذه الحالة، يُقال أن العميل لديه تبعية ذات كود صلب على. (بالإنجليزية: ExampleService)
يعتبر حقنالتبعية تقنية بديلة لتهيئة متغير العضو بدلاً من إنشاء كائن خدمة بشكل صريح كما هو موضح أعلاه. يمكننا تعديل هذا المثال
باستخدام التقنيات المختلفة الموضحة والموضحة في الأقسام الفرعية أدناه..
هناك ثلاث طرق على الأقل يمكن لكائن العميل تلقي مرجع لوحدة خارجية:
يتم توفير التبعيات من خلال مُنشئ صنف العميل..
يكشف العميل عن طريقة الضبط التي يستخدمها الحاقن لحقن التبعية..
توفر واجهة التبعية طريقة حاقن تضخ التبعية في أي عميل يتم تمريره إليها. يجب على العملاء تنفيذ واجهة تكشف عن طريقة تعيين يقبل التبعية.
حقن التبعية أمثلة
من الممكن أن يكون لأطر حقن التبعية أنواع أخرى من الحقن بخلاف تلك المذكورة أعلاه. قد تستخدم أطر الاختبار أيضًا أنواعًا أخرى. بعض أطر الاختبار الحديثة لا تتطلب حتى أن يقبل العملاء بنشاط حقن التبعية وبالتالي جعل الكود القديم قابل للاختبار. على وجه الخصوص، في لغة جافا، من الممكن استخدام الانعكاس لجعل السمات الخاصة عامة عند الاختبار وبالتالي قبول الحقن عن طريق التعيين.
لا تقدم بعض محاولات عكس التحكم الإزالة الكاملة للتبعية، ولكن بدلاً من ذلك ببساطة استبدال أحد أشكال التبعية بأخرى. كقاعدة عامة، إذا لم يتمكن المبرمج من النظر إلى شيء سوى كود العميل والإخبار عن إطار العمل المستخدم، عندئذٍ يكون لدى العميل اعتماد مرتبط بالكود الصلب على الإطار.
تتطلب هذه الطريقة من العميل توفير معلمة في مُنشئ للتبعية.
تتطلب هذه الطريقة من العميل توفير طريقة ضبط للتبعية.
ببساطة العميل هو الذي ينشر واجهة الدور لطرق تعيين تبعيات العميل. يمكن استخدامه لتحديد الطريقة التي يجب أن يتحدث بها الحاقن مع العميل عند حقن التبعيات.
حقن التبعية أمثلة
يُفضل عند إنشاء جميع التبعيات أولاً لأنه يمكن استخدامها لضمان أن يكون كائن العميل دائمًا في حالة صالحة، على العكس من ذلك هو أن تكون بعض مراجع التبعية الخاصة به خالية (لم يتم تعيينها). ومع ذلك، من تلقاء نفسها، تفتقر إلى المرونة لتغيير تبعياتها في وقت لاحق. يمكن أن تكون هذه خطوة أولى نحو جعل العميل غير قابل للتغيير وبالتالي خيط آمن.
يتطلب من العميل توفير طريقة ضبط لكل تبعية. وهذا يعطي حرية التلاعببحالة المراجع التبعية في أي وقت. يوفر هذا المرونة، ولكن إذا كان هناك أكثر من تبعية واحدة يجب حقنها، فمن الصعب على العميل التأكد من حقن جميع التبعيات قبل أن يتم توفير العميل للاستخدام.
نظرًا لأن هذه الحقن يحدث بشكل مستقل، فلا توجد طريقة لمعرفة متى ينتهي الحاقن من توصيل العميل. يمكن ترك التبعية فارغة ببساطة عن طريق الفشل في استدعاء أداة ضبطها. هذا يفرض التحقق من اكتمال الحقن من وقت تجميع العميل حتى وقت استخدامه.
حقن التبعية أمثلة
تتمثل ميزة حقن الواجهة في أن التبعيات يمكن أن تكون جاهلة تمامًا بعملائها، ومع ذلك لا يزال بإمكانها تلقي مرجع إلى عميل جديد واستخدامه، وإرسال مرجع إلى الذات إلى العميل. بهذه الطريقة، تصبح التبعيات عن طريق الحقن. الفكرة هي أن طريقة الحقن (التي يمكن أن تكون مجرد طريقة ضبط كلاسيكية) يتم توفيرها من خلال واجهة.
لا يزال هناك حاجة إلى مجمعلتعريفالعميل وتبعياته. سيأخذ المُجمِّع مرجع إلى العميل، ويحولها إلى واجهة المحدد التي تعيّن تلك التبعية وتمريرها إلى كائن التبعية هذا الذي يتحول ويمرر مرجع إلى الذات إلى العميل..
لكي يكون لحقن الواجهة قيمة، التبعية يجب أن تقوم بشيء، بالإضافة إلى إرجاع مرجع لنفسها.. يمكن أن يكون هذا بمثابة مصنع أو مجمع فرعي لحل تبعيات أخرى، وبالتالي تجريد بعض التفاصيل من المجمع الرئيسي.. يمكن أن يكون عدًا مرجعيًا حتى تعرف التبعية عدد العملاء الذين يستخدمونه. إذا احتفظت التبعية بمجموعة من العملاء، فيمكنها لاحقًا حقنهم جميعًا بمثيل مختلف عن نفسها
يعد التجميع يدويًا داخل الطريقة (الدالة) (بالإنجليزية: main) الرئيسية إحدى طرق تنفيذ حقن التبعية .
حقن التبعية أمثلة
ينشئ المثال أعلاه الرسم البياني للكائن يدويًا ثم يستدعيه عند نقطة واحدة لبدء العمل. من المهم ملاحظة أن هذا الحاقن ليس نقيًا. يستخدم أحد الكائنات التي يقوم ببنائها. لها علاقة بناء فقط مع ExampleService ولكنها تمزج البناء واستخدام العميل. لا ينبغي أن يكون هذا شائعًا. ومع ذلك، لا مفر منه. تمامًا مثل البرمجيات الموجهة للكائنات تحتاج إلى طريقة ثابتة غير موجهة للكائنات مثل ()main للبدء، يحتاج الرسم البياني للكائن المحقون بالتبعية إلى نقطة إدخال واحدة على الأقل (يفضل واحدة فقط) لبدء كل شيء.
قد لا يكون هذا البناء اليدوي في الطريقة الرئيسية مباشرأ وقد يتضمن استدعاء بناة أو مصانع أو أنماط بناء أخرى أيضًا. يمكن أن يكون هذا متقدمًا ومجرّدًا إلى حد ما. يتم تجاوز الخط من حقن التبعية اليدوي إلى حقن تبعية الإطار بمجرد أن كود البناء لم يعد مخصصًا للتطبيق بل أصبح عالميًا).
يمكن لإطارات مثل سبرينغ إنشاء هذه الكائنات نفسها وتوصيلها معًا قبل إرجاع مرجع إلى العميل. يمكن نقل جميع الإشارة إلى ExampleService الملموسة من الكود إلى بيانات التكوين.
حقن التبعية أمثلة
تسمح إطارات مثل سبرينغ بتفريغ تفاصيل التجميع في ملفات التكوين يقوم هذا الكود (أعلاه) ببناء الكائنات توصيلها معًا وفقًا لـ Beans.xml (أدناه). لا تزال خدمة قيد الإنشاء على الرغم من أنها مذكورة أدناه فقط. يمكن تعريف الرسم البياني للكائن الطويل والمعقد بهذه الطريقة، والصنف الوحيد المذكور في الكود ستكون هي صنف طريقة الإدخال، وهي في هذه الحالة (دالة تحية) ()greet.
حقن التبعية أمثلة
في المثال أعلاه، لم يكن يتعين على العميل والخدمة الخضوع لأية تغييرات يوزودها إطار سبرينغ. يسمح لهم بالبقاء كبوجو(بالإنجليزية: POJOs) بسيطة. يوضح هذا كيف يمكن لspring أن يربط الخدمات والعملاء الذين يجهلون تمامًا وجودها. لا يمكن قول ذلك إذا تمت إضافة التعليقات التوضيحية الخاصة بSpring إلى الأصناف. من خلال منع التعليقات التوضيحية الاستدعاءات الخاصة بسبرينغ من الانتشار بين العديد من الأصناف، يظل النظام معتمدًا بشكل فضفاض فقط على سبرينغ.
 قد يكون هذا مهمًا إذا كان النظام ينوي البقاء على قيد الحياة في سبرينغ. اختيار الحفاظ على POJOs صافية لا يأتي بدون تكلفة. بدلاً من بذل الجهد لتطوير ملفات التكوين المعقدة وصيانتها، من الممكن ببساطة استخدام التعليقات التوضيحية لوضع علامة على الأصناف) وترك سبرينغ يقوم بتتمة العمل. يمكن أن يكون حل التبعيات بسيطًا إذا اتبعت المصطلح عليه عادةً مثل المطابقة حسب النوع أو بالاسم. هذا هو اختيار الاصطلاح على التكوين
. ويمكن القول أيضًا أنه عند إعادة البناءإلى إطارآخر، فإن إزالة التعليقات التوضيحية المحددة للإطار ستكون جزءًا بسيطًا من المهمة
حقن التبعية أمثلة
ويتم الآن توحيد العديد من التعليقات التوضيحية بالحقن.
لا تختلف تنفيذات الحاقن المختلفة (المصانع، مواقع الخدمة، وحاويات حقن التبعية فيما يتعلق بحقن التبعية. ما يحدث فرقاً هو المكان الذي يسمح لهم باستخدامه. قم بنقل الاستدعاءات إلى المصنع أو محدد الخدمة خارج العميل وإلى الرئيسية (بالإنجليزية: main) والمفاجئ الرئيسي يجعل حاوية حقن التبعية جيدة إلى حد ما. من خلال نقل كل المعرفة عن الحاقن إلى الخارج، يتم ترك عميل نظيف، خالٍ من المعرفة بالعالم الخارجي. ومع ذلك، يمكن اعتبار أي كائن يستخدم كائنات أخرى عميلاً. الكائن الذي يحتوي على main ليس استثناء. هذا الكائن الرئيسي لا يستخدم حقن التبعية. في الواقع استخدام نمط محدد مواقع الخدمة. لا يمكن تجنب ذلك لأنه يجب أن يتم اختيار تنفذيات الخدمة في مكان ما.
لا يؤدي إخارج التبعيات إلى ملفات التكوين إلى تغيير هذه الحقيقة. ما يجعل هذه حقاً جزءًا من التصميم الجيد هو أن محدد الخدمة لا ينتشر في جميع أنحاء قاعدة الكود. يقتصر على مكان واحد لكل تطبيق. هذا يترك بقية الكود الاساسي متاح لاستخدام حقن التبعية لعملاء (نظيفين).