نمط الاعتراض

مثال على سيارة اعتراضية

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

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

الاستخدامات والسياق

المستخدمون النموذجيون لهذا النمط هم خوادم الويب [ 2 ] (كما ذكر أعلاه)، والبرمجيات الوسيطة الموجهة للكائنات [ 3 ] والرسائل [ 4 ]

ومن الأمثلة على تطبيق هذا النمط واجهة javax.servlet.Filter ، وهي جزء من Java Platform, Enterprise Edition .

يمكن أيضًا استخدام البرمجة الموجهة نحو الجوانب (AOP) في بعض الحالات لتوفير إمكانية الاعتراض، على الرغم من أن AOP لا تستخدم العناصر المحددة عادةً لنمط الاعتراض.

مراجع

  1. "شميدت، ستال، رونيرت وبوشمان: "هندسة البرمجيات الموجهة بالأنماط، المجلد 2: أنماط الكائنات المتزامنة والمتصلة بالشبكة"، الصفحات 109-140، أبريل 2001" . مؤرشف من الأصل بتاريخ 23 ديسمبر 2017. تم الاطلاع عليه بتاريخ 24 نوفمبر 2009 .
  2. مؤسسة برمجيات أباتشي: مرجع معترض القنوات في Tomcat 6.0، تم الاطلاع عليه بتاريخ 24 نوفمبر 2009
  3. يا إلهي، "كوربا الإصدار 3.1، الجزء الأول: الواجهات"، الفصل 16 "المعترضات المحمولة"، يناير 2008
  4. «إي. كاري، دي. تشامبرز، وجي. ليونز، "توسيع نطاق البرمجيات الوسيطة الموجهة نحو الرسائل باستخدام الاعتراض"، عُرض في ورشة العمل الدولية الثالثة حول الأنظمة الموزعة القائمة على الأحداث (DEBS '04)، ICSE '04، إدنبرة، اسكتلندا، المملكة المتحدة، 2004» (ملف PDF) . مؤرشف من النسخة الأصلية (PDF) بتاريخ 26 يوليو 2011. تم الاطلاع عليه بتاريخ 24 نوفمبر 2009 .