تحدث عن حقن التبعية
في البرمجة الموجهة للكائنات ، فإن المشكلة التي نتعامل معها غالبًا ما تكون مفككة. انخفاض اقتران البرنامج يشير إلى قابلية القراءة والصيانة للبرنامج. انعكاس التحكم (انعكاس التحكم أو IOC) هو مبدأ تصميم شائع الاستخدام للبرمجة الموجهة للكائنات. باستخدام هذا المبدأ يمكننا تقليل الاقتران. من بينها ، حقن التبعية هو التنفيذ الأكثر استخدامًا لانعكاس التحكم.
ما هو التبعية
التبعية هي ظاهرة شائعة في البرامج. على سبيل المثال ، يتم استخدام الطاقة المثيل لفئة Gasenergy في السيارة الفئة. تتمثل الممارسة المعتادة في إنشاء مثيل من فئة Gasenergy في فئة السيارة وتعيينه للطاقة. كما هو موضح في الكود التالي
interface Energy {} class gasenergy يطبق الطاقة {} clasهناك مشاكل
تتحمل السيارات الطبقية مسؤوليات غير ضرورية وهي مسؤولة عن إنشاء كائنات الطاقة ، والتي لا محالة لها اقتران خطير. لإعطاء مثال واقعي ، تقع على عاتق السيارة أن تستخدم الطاقة التي تستخدمها السيارة لا تعتمد على السيارة ، ولكن على الشركة المصنعة للسيارة.
قابلية التوسع. على افتراض أننا نريد تعديل الطاقة للطاقة الكهربائية ، فيجب علينا تعديل فئة السيارة ، والتي من الواضح أنها لا تتوافق مع مبدأ الإغلاق المفتوح.
لا يفضي إلى اختبار الوحدة.
حقن التبعية
حقن التبعية مثل هذا السلوك. في السيارة الصفية ، لا يتم إنشاء كائن Gasenergy بنشاط ، ولكن يتم تعيين التبعية عن طريق تمريرها في شكل كائن Gasenergy خارجيًا. هناك ثلاث طرق شائعة لحقن التبعية.
حقن المنشئ
تمرير التبعية المطلوبة كمعلمات للمقدم لإكمال حقن التبعية.
Class Car {Energy menergy ؛ السيارة العامة (الطاقة الطاقة) {menergy = الطاقة ؛ }}حقن طريقة setter
إضافة طريقة Setter ، المعلمة هي التبعية التي يجب حقنها ، ويمكن إكمال حقن التبعية.
Class Car {Energy menergy ؛ public void setenergy (Energy Energy) {menergy = Energy ؛ }}حقن الواجهة
إن حقن الواجهة بديهي ، وهو إنشاء مجموعة من الواجهات لحقن التبعية ، ويتم تمرير التبعية كمعلمات ، ويتم إكمال حقن التبعية للتنفيذ المحدد عن طريق استدعاء واجهة موحدة.
interface EnergyConsumerInterface {public void setenergy (Energy Energy) ؛} Class Car Passions EnergyConsumerInterface {Energy menergy ؛ public void setenergy (Energy Energy) {menergy = Energy ؛ }}يشبه حقن الواجهة حقن طريقة Setter ، والفرق هو أن حقن الواجهة يستخدم طريقة موحدة لإكمال الحقن ، في حين أن اسم طريقة حقن طريقة Setter غير رسمي نسبيًا.
المفاضلات الإطار
هناك العديد من الأطر لحقن التبعية ، والأكثر شهرة هو Guice. بالطبع ، يدعم الربيع أيضًا حقن التبعية. يستخدم Guice التعليقات التوضيحية لقراءة وقت التشغيل ، ويولد تبعيات ويحققها من خلال التفكير. هذا النموذج غير مناسب جدًا لأجهزة Android المحمولة. بعد كل شيء ، تتم معالجة هذه العمليات في وقت التشغيل ولديها متطلبات عالية الأداء.
الخنجر هي مكتبة حقن التبعية مناسبة لتطوير Android. كما أنه يستخدم شكل التعليقات التوضيحية الفئة. الفرق هو أنه يولد فئات مساعدة في وقت الترجمة وينتظر حتى يتم استخدام الطبقات المساعدة التي تم إنشاؤها لإكمال حقن التبعية في وقت التشغيل.
استخدام أم لا
في الواقع ، ما إذا كنت تريد استخدام أو عدم استخدام الإطار مشكلة. إذا كنت تستخدم الإطار ، فيجب على كل شخص في الفريق اتباع التعليمات لكتابة الكود لحل حقن التبعية. ليس من السهل البدء في هذه الأطر ، ومعاملات التعلم معقدة نسبيًا ويصعب إتقانها ، وهي أيضًا مشكلة يجب مراعاتها.
رأيي الشخصي هو أننا لا نوصي أو نعارض استخدام هذه الأطر ، لكنني أشعر أنه في بعض الأحيان نأمل في إطار عمل ، لذلك من الأفضل الانتباه إلى هذه القضايا في حياتنا اليومية. أليس التجنب الاصطناعي أيضًا شرطًا أساسيًا لأنفسنا؟
البحث عن التبعية
البحث عن التبعية هو التنفيذ المحدد لمبدأ انعكاس التحكم ، على عكس القبول السلبي لحقن التبعية ، يعد البحث عن التبعية طلبًا نشطًا. عند الحاجة ، يتم الحصول على الكائن عن طريق استدعاء الأساليب التي يوفرها الإطار. عند الحصول على مسارات ملفات التكوين ذات الصلة والمفاتيح والمعلومات الأخرى مطلوبة لتحديد حالة الكائن الذي يتم الحصول عليه.
ما سبق هو مقدمة مفصلة للمعلومات عن حقن التبعية. سنستمر في إضافة المعلومات ذات الصلة في المستقبل. شكرا لك على دعمك لهذا الموقع!