نمط تحدي المسؤولية هو نمط تصميم سلوكي يسمح لك بتقديم طلب على طول سلسلة من المتعاملين، وهذا النمط مفيد بشكل خاص في إنشاء خطوط أنابيب مرنة وقابلة للتكييف، حيث يمكن إضافة خطوات متعددة للتحقق، أو إزالتها، أو إعادة ترتيبها بسهولة.

Understanding the Chain of Responsibility Pattern

والفكرة الرئيسية وراء هذا النمط هي تفكك مرسل طلب من متلقيه بمنح أكثر من غرض واحد فرصة لمعالجة الطلب، وتربط هذه الأشياء في سلسلة، ويقرر كل طرف ما إذا كان سيعالج الطلب أو سيمر به.

تنفيذ خط بياني لتقييم الوضع

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

إنشاء واجهة المؤمن

(ب) تحديد واجهة مشتركة لجميع المصادقين لضمان الاتساق، وينبغي أن تشمل هذه الوصلة طريقة لتحديد المصادق التالي وطريقة لتثبيت صحة البيانات.

مثال في PHP:

interface Validator] {
' ' absp; /mbsp;public function setNext (Validator $validator): Validator;
] ' ' /bsp; public function validate ($data): bool;

المرشّحين المُحدّدين

ويقوم كل مثبت خرساني بتنفيذ واجهة المؤمنين، مثلاً، مصادقة على ما إذا كانت البيانات غير فارغة:

class NotEmptyValidator implements Validator {
b (ب) أن تُعاد مبلغ هذا المبلغ إلى خارجه (البيانات)؛
" [الصندوق] " ؛ [النفقة؛ النفقة؛ النفقة؛ النفقة؛ التوقّف؛]
" Bsp}؛ النفقة؛ التوقّف الحقيقي؛

بناء سلسلة تقييم مرنة

ولإنشاء خط سير للتحقق، يعترض المصادقة على الفور ويربطها باستخدام طريقة " نيكست " ، مما يتيح تشكيلا ديناميا للخطوات المصادقة استنادا إلى متطلبات محددة.

مثال:

$ notEmptyValidator = New NotEmptyValidator ; ]

$emailValidator = New EmailValidator

$ notEmptyValidator- ⁇ setNext($emailValidator);]

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

مزايا استخدام باترن

  • خطوط التثبت المرنة والدينامية
  • من السهل إضافة أو إزالة أو إعادة ترتيب خطوات التصديق
  • انخفاض منطق التصديق من تجهيز البيانات
  • تعزيز قابلية الشفرة للاستمرار والارتقاء

وبتنفيذ نمط سلسلة المسؤولية، يمكن للمطورين أن يستحدثوا نظما قوية وقابلة للتكيف للتحقق من البيانات تلبي الاحتياجات المتنوعة من التطبيقات بكفاءة.