نمط محدد موقع الخدمة

نمط محدد موقع الخدمة هو نمط تصميم يستخدم في تطوير البرمجيات لتغليف العمليات التي ينطوي عليها الحصول على خدمة ذات طبقة تجريد قوية. يستخدم هذا النمط سجلاً مركزيًا يُعرف باسم «محدد الخدمة» "service locator"، والذي يقوم عند الطلب بإرجاع المعلومات اللازمة لأداء مهمة معينة. يقول مؤيدو النمط إن هذا النهج يبسط التطبيقات القائمة على المكونات حيث يتم أدراج جميع التبعيات بشكل نظيف في بداية تصميم التطبيق بالكامل، وبالتالي جعل حقن التبعية التقليدية طريقة أكثر تعقيدًا لتوصيل الكائنات. يجادل منتقدو النمط أنه نمط مضاد يحجب التبعيات ويجعل اختبار البرمجيات أصعب.

مزايا 

 يمكن أن يعمل «محدد الخدمة» بمثابة رابط بسيط لوقت التشغيل. هذا يسمح بإضافة كود في وقت التشغيل دون إعادة تجميع التطبيق، وفي بعض الحالات دون الحاجة إلى إعادة تشغيله.
 يمكن للتطبيقات تحسين نفسها في وقت التشغيل عن طريق إضافة العناصر وإزالتها بشكل انتقائي من محدد الخدمة. على سبيل المثال، يمكن للتطبيق أن يكتشف أن لديه مكتبة أفضل لقراءة صور جيه بيه إيه جي المتاحة من المكتبة الافتراضية، وتغيير السجل وفقًا لذلك.
 يمكن فصل أقسام كبيرة من مكتبة أو تطبيق بالكامل. الرابط الوحيد بينهما يصبح السجل.
 قد يستخدم التطبيق العديد من محددات الخدمة المنظمة التي تم إنشاؤها لوظيفة / اختبار معين. لا يحدد محدد موقع الخدمة صنف ثابت واحد لكل عملية.
 قد يكون الحل أبسط مع محدد موقع الخدمة (ضد حقن التبعية) في التطبيقات ذات التصميم الجيد للمكونات / الخدمة. في هذه الحالات، يمكن اعتبار العيوب ميزات تبعاً لذلك (على سبيل المثال، لا حاجة إلى توفير تبعيات مختلفة لكل صنف واصلاح تكوينات التبعية).

سلبيات 

 عندما تكون التبعيات مفقودة (على غرار استخدام حقن التبعية)، يخفي السجل تبعيات الصنف، مما يتسبب في أخطاء في وقت التشغيل بدلاً من أخطاء في وقت التجميع. لكن كل مكتبة يتم تجميعها، قد لا يتم العثور على الصنف الملموس فقط فينتج خطئ برمجي، تعتبر هذه المشكلة مشكلة وقت نشر أكثر من مشكلة محدد خدمة.
 السجل يجعل الكود أصعب للاختبار، نظرًا لأن جميع الاختبارات تحتاج إلى التفاعل مع نفس صنف محدد الخدمة العالمية لتعيين التبعيات المزيفة للصنف الذي ما زال قيد الاختبار. ومع ذلك، يمكن التغلب على ذلك بسهولة عن طريق حقن أصناف التطبيق بواجهة بينية خاصة بتحديد موقع خدمة واحدة. يمكن أن ينفذ المحاكي محاكاة كل واجهة يوفرها محدد الخدمة، لذلك من السهل تبديل التنفيذ الحقيقي بمحاكي.

ملحق: مسرد المصطلحات الإنجليزية

انظر أيضًا 

 حقن التبعية

المراجع

روابط خارجية 

 عينة من الرموز
 في الدفاع عن محدد الخدمة
 أنماط برمجة اللعبة: محدد الخدمة
 التبعيات في التنكر
 أساطير وحقائق هندسة البرمجيات

نماذج تصميم البرمجيات
برمجة