Latest web development tutorials

اعتراض نمط تصفية

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

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

تحقيق

فإننا سنضعFilterChain،FilterManager، الهدف، يمثلالعميلالكيانات ككائنات مختلفة.AuthenticationFilterوDebugFilter تمثل كيانات المرشحات.

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

اعتراض نمط تصفية UML الرسم البياني

خطوة 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