Mod penapis pemintasan
Corak Penapis Memintas
Corak Penapis Memintas digunakan untuk melakukan beberapa pra-pemprosesan/pasca pemprosesan permintaan atau respons aplikasi. Penapis ditakrifkan dan digunakan pada permintaan sebelum ia dihantar ke aplikasi sasaran sebenar. Penapis boleh melakukan pengesahan/kebenaran/pengelogan, atau menjejaki permintaan, dan kemudian menghantar permintaan kepada pengendali yang sesuai. Berikut ialah entiti bagi corak reka bentuk ini.
Penapis - Penapis melaksanakan tugas tertentu sebelum atau selepas pengendali permintaan melaksanakan permintaan.
Rantai Penapis - Rantaian penapis mengambil berbilang penapis dan melaksanakannya dalam susunan yang ditetapkan pada Sasaran.
Sasaran - Objek Sasaran ialah pengendali permintaan.
Pengurus Penapis - Pengurus Penapis menguruskan penapis dan rantai penapis.
Klien - Klien ialah objek yang menghantar permintaan kepada objek Sasaran.
Melaksanakan
kami akan mencipta FilterChain, FilterManager, Sasaran, Klien sebagai pelbagai objek yang mewakili entiti. AuthenticationFilter dan DebugFilter mewakili penapis entiti.
InterceptingFilterDemo, kelas demo kami menggunakan Client untuk menunjukkan corak reka bentuk penapis memintas.
Langkah 1
Buat Penapis antara muka penapis.
Filter.java
public interface Filter { public void execute(String request); }
Langkah 2
Buat penapis entiti.
AuthenticationFilter.java
public class AuthenticationFilter implements Filter { public void execute(String request){ System.out.println("Authenticating request: " + request); } }
DebugFilter.java
public class DebugFilter implements Filter { public void execute(String request){ System.out.println("request log: " + request); } }
Langkah 3
Buat Sasaran.
Target.java
public class Target { public void execute(String request){ System.out.println("Executing request: " + request); } }
Langkah 4
Buat rantai penapis.
FilterChain.java
import java.util.ArrayList; import java.util.List; public class FilterChain { private List<Filter> filters = new ArrayList<Filter>(); private Target target; public void addFilter(Filter filter){ filters.add(filter); } public void execute(String request){ for (Filter filter : filters) { filter.execute(request); } target.execute(request); } public void setTarget(Target target){ this.target = target; } }
Langkah 5
Buat pengurus penapis.
FilterManager.java
public class FilterManager { FilterChain filterChain; public FilterManager(Target target){ filterChain = new FilterChain(); filterChain.setTarget(target); } public void setFilter(Filter filter){ filterChain.addFilter(filter); } public void filterRequest(String request){ filterChain.execute(request); } }
Langkah 6
Buat Pelanggan klien.
Client.java
public class Client { FilterManager filterManager; public void setFilterManager(FilterManager filterManager){ this.filterManager = filterManager; } public void sendRequest(String request){ filterManager.filterRequest(request); } }
Langkah 7
Gunakan Client untuk menunjukkan corak reka bentuk penapis pemintas.
FrontControllerPatternDemo.java
public class InterceptingFilterDemo { public static void main(String[] args) { FilterManager filterManager = new FilterManager(new Target()); filterManager.setFilter(new AuthenticationFilter()); filterManager.setFilter(new DebugFilter()); Client client = new Client(); client.setFilterManager(filterManager); client.sendRequest("HOME"); } }
Langkah 8
Sahkan output.
rreeee