HTML tutorial
CSS3 tutorial
Bootstrap tutorial
JavaScript tutorial
JQuery tutorial
AngularJS tutorial
React tutorial
NodeJS tutorial
PHP tutorial
Python tutorial
Python3 tutorial
Django tutorial
Linux tutorial
Docker tutorial
Ruby tutorial
Java tutorial
C tutorial
C ++ tutorial
Perl tutorial
JSP tutorial
Lua tutorial
Scala tutorial
Go tutorial
ASP.NET tutorial
C # tutorial
Intercepting Filter pattern (Intercepting Filter Pattern) for requesting an application or in response to do some pre-processing / post-processing. Define the filter, and before the request to the practical application of the target application on request. Filters can do authentication / authorization / logging or tracking request, then the request to the appropriate handler. The following is an entity of this design pattern.
We will createFilterChain,FilterManager, Target, Client represents entities as various objects.AuthenticationFilterandDebugFilterrepresent entities filters.
InterceptingFilterDemo,we demonstrate the use ofClientclass to demonstrate the Intercepting Filter design pattern.
Create Filter Interface Filter.
Filter.java
public interface Filter { public void execute (String request); }
Create entity filter.
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); } }
Create Target.
Target.java
public class Target { public void execute (String request) { System.out.println ( "Executing request:" + request); } }
Create a filter chain.
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; } }
Create Filter Manager.
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); } }
Create a client Client.
Client.java
public class Client { FilterManager filterManager; public void setFilterManager (FilterManager filterManager) { this.filterManager = filterManager; } public void sendRequest (String request) { filterManager.filterRequest (request); } }
UseClientto demonstrate the Intercepting Filter design pattern.
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"); } }
Verify output.
Authenticating request: HOME request log: HOME Executing request: HOME