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

نمط مُحدد الخدمة هو نمط تصميم يُستخدم في تطوير البرمجيات لتغليف العمليات المتعلقة بالحصول على خدمة ما، وذلك من خلال طبقة تجريد قوية . يستخدم هذا النمط سجلًا مركزيًا يُعرف باسم "مُحدد الخدمة"، والذي يُعيد عند الطلب المعلومات اللازمة لتنفيذ مهمة معينة. [ 1 ] يقول مؤيدو هذا النمط إنه يُبسط التطبيقات القائمة على المكونات، حيث تُدرج جميع التبعيات بوضوح في بداية تصميم التطبيق، مما يجعل حقن التبعية التقليدي طريقة أكثر تعقيدًا لربط الكائنات. في المقابل، يرى منتقدو هذا النمط أنه نمط سيئ يُخفي التبعيات ويجعل اختبار البرمجيات أكثر صعوبة. [ 2 ]
المزايا
- يمكن أن يعمل "محدد الخدمة" كرابط بسيط أثناء التشغيل . وهذا يسمح بإضافة التعليمات البرمجية أثناء التشغيل دون إعادة تجميع التطبيق، وفي بعض الحالات دون الحاجة حتى إلى إعادة تشغيله.
- يمكن للتطبيقات تحسين أدائها أثناء التشغيل عن طريق إضافة عناصر إلى مُحدد الخدمة أو إزالتها منه بشكل انتقائي. على سبيل المثال، يمكن للتطبيق اكتشاف وجود مكتبة أفضل لقراءة صور JPG من المكتبة الافتراضية، وتعديل سجل النظام وفقًا لذلك.
- يمكن فصل أجزاء كبيرة من مكتبة أو تطبيق بشكل كامل . ويصبح السجل هو الرابط الوحيد بينها.
- قد يستخدم التطبيق عدة محددات خدمة هيكلية مخصصة لوظائف أو اختبارات معينة. ولا يشترط محدد الخدمة وجود فئة ثابتة واحدة لكل عملية.
- قد يكون الحل أبسط باستخدام مُحدد الخدمة (بدلاً من حقن التبعية) في التطبيقات ذات تصميم المكونات/الخدمات المُهيكل جيدًا. في هذه الحالات، يمكن اعتبار العيوب ميزة (على سبيل المثال، عدم الحاجة إلى توفير تبعيات متعددة لكل فئة وصيانة إعدادات التبعية).
- يمكن جعل عملية تحديد موقع الخدمة حساسة لنطاق/سياق الاستدعاء، والذي قد يُمثل حالة عمل محددة. فبدلاً من الاعتماد على حقن التبعية الثابت الذي يُزوّد الكائن عادةً بتبعياته عبر تمرير مُعامل المُنشئ، يُمكن إجراء استدعاء تحديد موقع الخدمة في سياق العمل حسب الحاجة. على سبيل المثال، قد ترغب في استدعاء مثيل "IShippingStrategy" الذي تم الحصول عليه عبر استدعاء تحديد موقع الخدمة، مع تزويد "ShippingContext" كمعامل لمحدد موقع الخدمة، مُحددًا ما يتم شحنه من أين وإلى أين، حتى يتمكن محدد موقع الخدمة من مطابقة أفضل حالة (مثل استخدام درجة مطابقة نمط). يُبسط هذا بشكل كبير بنية تطبيقات الأعمال المعقدة (مثل أنظمة التقييم الطبي، والتوجيه) حيث يُمكن اتخاذ قرارات غير مباشرة عبر تقييم أفضل استراتيجية مطابقة يتم تحديدها ديناميكيًا أثناء التشغيل.
العيوب
- يقوم السجل بإخفاء تبعيات الفئة، مما يتسبب في حدوث أخطاء وقت التشغيل بدلاً من أخطاء وقت الترجمة عندما تكون التبعيات مفقودة (على عكس استخدام حقن المُنشئ ).
- يجعل السجل اختبار التعليمات البرمجية أكثر صعوبة ، حيث تحتاج جميع الاختبارات إلى التفاعل مع نفس فئة محدد موقع الخدمة العالمية لتعيين التبعيات الوهمية لفئة قيد الاختبار.
انظر أيضاً
مراجع
- ↑ فاولر، مارتن. "انعكاس حاويات التحكم ونمط حقن التبعية" .
- ↑ سيمان، مارك. "محدد الخدمة نمط مضاد" . blog.ploeh.dk . تم الاسترجاع في 1 يونيو 2017 .
روابط خارجية
فئات :
- النمط المعماري (علوم الحاسوب)
- أنماط تصميم البرمجيات
- نماذج أولية لهندسة البرمجيات
