اعتراض نمط تصفية
اعتراض نمط تصفية (اعتراض نمط الفلتر) لطلب تطبيق أو استجابة للقيام ببعض ما قبل المعالجة / مرحلة ما بعد المعالجة. تحديد مرشح، وقبل الطلب إلى التطبيق العملي لتطبيق الهدف على الطلب. مرشحات يمكن القيام التوثيق / ترخيص / تسجيل أو طلب تتبع، ثم الطلب إلى معالج المناسبة. ما يلي هو كيان من هذا النمط التصميم.
- مرشح (فلتر) - مرشح قبل أو بعد تنفيذ الطلب طلب المعالج لأداء مهام معينة.
- سلسلة فلتر (مرشح سلسلة) - سلسلة فلتر مع عدد وافر من المرشحات، وتنفيذ هذه المرشحات على الهدف في تسلسل محدد.
- الهدف - الهدف هو معالج طلب الكائن.
- مدير مرشح (فلتر مدير) - مرشحات إدارة التصفية وسلسلة التصفية.
- العميل (العميل) - كائن العميللاستهداف كائن لإرسال الطلب.
تحقيق
فإننا سنضعFilterChain،FilterManager، الهدف، يمثلالعميلالكيانات ككائنات مختلفة.AuthenticationFilterوDebugFilter تمثل كيانات المرشحات.
InterceptingFilterDemo،ونحن لشرح استخدام الطبقةالعميلللتدليل على اعتراض نمط تصميم تصفية.
خطوة 1
إنشاء تصفية واجهة تصفية.
Filter.java
الواجهة العمومية تصفية { الفراغ العام تنفيذ (طلب سلسلة)؛ }
خطوة 2
إنشاء فلتر الكيان.
AuthenticationFilter.java
الطبقة العامة AuthenticationFilter تنفذ تصفية { الفراغ العام تنفيذ (طلب سلسلة) { System.out.println ( "طلب تصديق:" + الطلب). } }
DebugFilter.java
الطبقة العامة DebugFilter تنفذ تصفية { الفراغ العام تنفيذ (طلب سلسلة) { System.out.println ( "سجل الطلب:" + الطلب). } }
خطوة 3
إنشاء الهدف.
Target.java
فئة العمومي الهدف { الفراغ العام تنفيذ (طلب سلسلة) { System.out.println ( "طلب المنفذة:" + الطلب). } }
خطوة 4
إنشاء سلسلة التصفية.
FilterChain.java
استيراد java.util.ArrayList. استيراد java.util.List. الطبقة العامة FilterChain { قائمة خاصة <> تصفية المرشحات = جديد ArrayList <مرشح> ()؛ الهدف الهدف الخاص؛ الفراغ العام addFilter (فلتر تصفية) { filters.add (فلتر)؛ } الفراغ العام تنفيذ (طلب سلسلة) { ل(فلتر: مرشحات) { filter.execute (طلب)؛ } target.execute (طلب)؛ } setTarget باطلة العامة (الهدف الهدف) { this.target = المستهدفة؛ } }
خطوة 5
إنشاء إدارة التصفية.
FilterManager.java
الطبقة العامة FilterManager { FilterChain filterChain. الجمهور FilterManager (الهدف المستهدف) { filterChain = FilterChain الجديدة ()؛ filterChain.setTarget (الهدف)؛ } الفراغ العام setFilter (فلتر تصفية) { filterChain.addFilter (فلتر)؛ } filterRequest الفراغ الجمهور (طلب سلسلة) { filterChain.execute (طلب)؛ } }
خطوة 6
إنشاء عميل عميل.
Client.java
فئة العمومي العميل { FilterManager filterManager. setFilterManager الفراغ الجمهور (FilterManager filterManager) { this.filterManager = filterManager. } الفراغ العام sendRequest (طلب سلسلة) { filterManager.filterRequest (طلب)؛ } }
خطوة 7
استخدامالعميلللتدليل على اعتراض نمط تصميم تصفية.
FrontControllerPatternDemo.java
الطبقة العامة InterceptingFilterDemo { (وسائط سلسلة []) العامة ساكنة باطلة الرئيسية { FilterManager filterManager = الجديدة FilterManager (الهدف الجديد ())؛ filterManager.setFilter (AuthenticationFilter الجديدة ())؛ filterManager.setFilter (DebugFilter الجديدة ())؛ العميل عميل = عميل جديد ()؛ client.setFilterManager (filterManager)؛ client.sendRequest ( "الوطن")؛ } }
الخطوة 8
تحقق من الانتاج.
طلب مصادقة: HOME سجل الطلب: HOME طلب تنفيذ: HOME