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.
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