نمط مرشح الاعتراض
نمط المرشح المعترض هو نمط في JavaEE يُنشئ مرشحات قابلة للتوصيل لمعالجة الخدمات الشائعة بطريقة قياسية دون الحاجة إلى تغييرات في كود معالجة الطلبات الأساسي. تعترض هذه المرشحات الطلبات الواردة والاستجابات الصادرة، مما يسمح بالمعالجة المسبقة واللاحقة، ويمكن إضافة هذه المرشحات أو إزالتها بسلاسة دون تغيير الكود الحالي. [ 1 ] يطبق هذا النمط معالجة قابلة لإعادة الاستخدام بشفافية قبل وبعد تنفيذ الطلب الفعلي بواسطة وحدات التحكم في الواجهة الأمامية والصفحة. [ 2 ]
بناء
مدير المرشحات، وسلسلة المرشحات، والمرشحات، والهدف هي مكونات النمط.
مدير المصيدة
يتولى هذا إدارة معالجة المرشحات وإنشاء سلسلة المرشحات بالمرشحات المناسبة، وبالترتيب الصحيح، ويبدأ المعالجة. [ 1 ]
سلسلة الترشيح
سلسلة المرشحات هي سلسلة محددة من المرشحات، مُركبة بحيث تُشكل سلسلة منطقية. [ 1 ]
الفلاتر
هذه هي المرشحات الفردية التي يتم ربطها بهدف معين، ويتم تنسيق معالجتها بواسطة سلسلة المرشحات. [ 1 ]
هدف
هذا هو المورد الذي طلبه العميل. [ 1 ]
عواقب
يمكن النظر في المزايا التالية:
- تحسين إمكانية إعادة الاستخدام: يتم مركزة الكود المشترك في مكونات قابلة للتوصيل مما يعزز إعادة الاستخدام.
- زيادة المرونة: يمكن تطبيق المكونات العامة المشتركة وإزالتها بشكل تصريحي، مما يحسن المرونة. [ 1 ] [ 2 ]
قد يكون انخفاض الأداء مصدر قلق، حيث أن سلاسل الاعتراضات والمرشحات الطويلة بلا داعٍ قد تؤثر سلبًا على الأداء. [ 2 ]
نموذج التعليمات البرمجية
فيما يلي نموذج لتنفيذ التعليمات البرمجية الخاصة بالمرشحات ذات استراتيجية التصفية المخصصة.
كود لتنفيذ فلتر - فلتر تصحيح الأخطاء:
استيراد java.io.IOException ؛استيراد javax.annotation.processing.Processor ؛استيراد jakarta.servlet.ServletException ؛ استيراد jakarta.servlet.ServletRequest ؛ استيراد jakarta.servlet.ServletResponse ؛public class DebuggingFilter implements Processor { private Processor target ;public DebuggingFilter ( Processor myTarget ) { target = myTarget ; }public void execute ( ServletRequest req , ServletResponse res ) throws IOException , ServletException { // قم ببعض عمليات التصفية هنا، مثل // عرض معلمات الطلب target . execute ( req , res ); } }[ 1 ]
كود لتنفيذ مرشح - معالج أساسي:
استيراد java.io.IOException ؛استيراد javax.annotation.processing.Processor ؛استيراد jakarta.servlet.ServletException ؛ استيراد jakarta.servlet.ServletRequest ؛ استيراد jakarta.servlet.ServletResponse ؛public class CoreProcessor implements Processor { private Processor target ; public CoreProcessor () { this ( null ); }public CoreProcessor ( Processor myTarget ) { target = myTarget ; }public void execute ( ServletRequest req , ServletResponse res ) throws IOException , ServletException { // قم بالمعالجة الأساسية هنا } }[ 1 ]
التعليمات البرمجية لمعالجة الطلبات:
استيراد java.io.IOException ؛استيراد javax.annotation.processing.Processor ؛استيراد jakarta.servlet.ServletException ؛ استيراد jakarta.servlet.ServletRequest ؛ استيراد jakarta.servlet.ServletResponse ؛public void processRequest ( ServletRequest req , ServletResponse res ) throws IOException , ServletException { Processor processors = new DebuggingFilter ( new AuthenticationFilter ( new CoreProcessor ())) ; processors.execute ( req , res ) ;// ثم يتم الإرسال إلى المورد التالي، والذي من المحتمل أن يكون // العرض المراد عرضه dispatcher.dispatch ( req , res ); }[ 1 ]
كود مدير الفلتر:
استيراد java.io.IOException ؛استيراد javax.annotation.processing.Processor ؛استيراد jakarta.servlet.ServletException ؛ استيراد jakarta.servlet.ServletRequest ؛ استيراد jakarta.servlet.ServletResponse ؛public void processRequest ( ServletRequest req , ServletResponse res ) throws IOException , ServletException { Processor processors = new DebuggingFilter ( new AuthenticationFilter ( new CoreProcessor ())) ; processors.execute ( req , res ) ;// ثم يتم الإرسال إلى المورد التالي، والذي من المحتمل أن يكون // العرض المراد عرضه dispatcher.dispatch ( req , res ); }[ 1 ]
رمز سلسلة المرشحات:
استيراد jakarta.servlet.Filter ؛public class FilterChain { // سلسلة المرشحات// تطبيق المرشحات for ( final Filter filter : filters ) { // تمرير الطلب والاستجابة عبر مرشحات مختلفة // filter . execute ( request , response ); } } }[ 1 ]
انظر أيضاً
مراجع
- 1 2 3 4 5 6 7 8 9 10 11 "أنماط J2EE الأساسية - مرشح الاعتراض" . أوراكل . أوراكل . تم الاسترجاع في 6 فبراير 2016 .
- 1 2 3 كيال، د. (2008). أنماط الربيع برو جافا EE . نيويورك: أبريس. ص 98 – 106.
- أنماط تصميم البرمجيات
