Latest web development tutorials

Mencegat pola Filter

Mencegat pola Filter (mencegat Filter Pola) untuk meminta aplikasi atau dalam menanggapi melakukan beberapa pre-processing / post-processing. Mendefinisikan filter, dan sebelum permintaan untuk aplikasi praktis dari aplikasi target atas permintaan. Filter dapat melakukan otentikasi / otorisasi / logging atau permintaan pelacakan, maka permintaan ke handler yang sesuai. Berikut ini adalah entitas dari pola desain ini.

  • Filter (Filter) - filter sebelum atau setelah pelaksanaan permintaan permintaan handler untuk melakukan tugas tertentu.
  • Filter chain (Filter Chain) - rantai filter dengan pluralitas filter, dan pelaksanaan filter ini pada Target dalam urutan yang ditetapkan.
  • Target - Target adalah permintaan objek handler.
  • Filter Manager (Filter Manager) - filter Manajer Filter dan rantai filter.
  • Client (klien) - objek klienke Target objek untuk mengirim permintaan.

realisasi

Kami akan membuatfilterChain,FilterManager, Target, Client merupakan entitas berbagai benda.AuthenticationFilterdanDebugFiltermewakili entitas filter.

InterceptingFilterDemo,kami menunjukkan penggunaan kelasClientuntuk menunjukkan pola Filter desain mencegat.

Mencegat pola Filter diagram UML

Langkah 1

Buat Filter Antarmuka Filter.

Filter.java

Filter antarmuka publik {
   public void mengeksekusi (String permintaan);
}

Langkah 2

Buat entitas filter.

AuthenticationFilter.java

public class AuthenticationFilter mengimplementasikan Filter {
   public void mengeksekusi (permintaan String) {
      System.out.println ( "Otentikasi permintaan:" + permintaan);
   }
}

DebugFilter.java

public class DebugFilter mengimplementasikan Filter {
   public void mengeksekusi (permintaan String) {
      System.out.println ( "permintaan log:" + permintaan);
   }
}

Langkah 3

Buat Target.

Target.java

public class Sasaran {
   public void mengeksekusi (permintaan String) {
      System.out.println ( "Pelaksana permintaan:" + permintaan);
   }
}

Langkah 4

Menciptakan sebuah rantai filter.

FilterChain.java

impor java.util.ArrayList;
import java.util.List;

public class filterChain {
   Daftar pribadi <Filter> filter = ArrayList baru <Filter> ();
   Target Sasaran swasta;

   public void addFilter (Filter filter) {
      filters.add (filter);
   }

   public void mengeksekusi (permintaan String) {
      untuk (Filter filter: filter) {
         filter.execute (permintaan);
      }
      target.execute (permintaan);
   }

   public void setTarget (target Target) {
      this.target = sasaran;
   }
}

Langkah 5

Buat Filter Manager.

FilterManager.java

public class FilterManager {
   FilterChain filterChain;

   publik FilterManager (target Target) {
      filterChain = baru filterChain ();
      filterChain.setTarget (target);
   }
   public void setFilter (Filter filter) {
      filterChain.addFilter (filter);
   }

   public void filterRequest (permintaan String) {
      filterChain.execute (permintaan);
   }
}

Langkah 6

Membuat klien Klien.

Client.java

public class Client {
   FilterManager filterManager;

   public void setFilterManager (FilterManager filterManager) {
      this.filterManager = filterManager;
   }

   public void sendRequest (permintaan String) {
      filterManager.filterRequest (permintaan);
   }
}

Langkah 7

GunakanClientuntuk menunjukkan pola Filter desain mencegat.

FrontControllerPatternDemo.java

public class InterceptingFilterDemo {
   public static void main (String [] args) {
      FilterManager filterManager = baru FilterManager (Target baru ());
      filterManager.setFilter (AuthenticationFilter baru ());
      filterManager.setFilter (DebugFilter baru ());

      Klien klien = klien baru ();
      client.setFilterManager (filterManager);
      client.sendRequest ( "HOME");
   }
}

Langkah 8

Verifikasi output.

Otentikasi permintaan: HOME
permintaan log: HOME
Pelaksana permintaan: HOME