Intercepter motif de filtre
Intercepter motif de filtre (Intercepter Filter Pattern) pour demander une demande ou en réponse à faire un peu de pré-traitement / post-traitement. Définir le filtre, et avant que la requête à l'application pratique de l'application cible sur demande. Les filtres peuvent faire l'authentification / autorisation / exploitation forestière ou de suivi des demandes, la demande au gestionnaire approprié. Ce qui suit est une entité de ce modèle de conception.
- Filter (Filtre) - filtre avant ou après l'exécution de la demande gestionnaire de requêtes pour effectuer certaines tâches.
- chaîne de filtre (chaîne de filtre) - chaîne de filtre avec une pluralité de filtres, et la mise en œuvre de ces filtres sur la cible dans une séquence définie.
- Target - Target est le gestionnaire de requête d'objet.
- Gestionnaire de filtres (Gestionnaire de filtres) - filtres Manager de filtre et de la chaîne de filtre.
- Client (Client) - Objet Clientobjet cible pour envoyer la demande.
réalisation
Nous allons créerFilterChain,FilterManager, Target, client représente les entités que divers objets.AuthenticationFilteretDebugFilterreprésentent les filtres entités.
InterceptingFilterDemo,nous démontrons l'utilisation de la classeclientpour démontrer le modèle de conception de filtre Intercepter.
Etape 1
Créer un filtre Interface filtre.
Filter.java
interface publique filtre { public void execute (demande de String); }
Etape 2
Créer un filtre d'entité.
AuthenticationFilter.java
public class AuthenticationFilter implémente Filter { public void execute (demande de String) { System.out.println ( "demande Authentifier:" + demande); } }
DebugFilter.java
DebugFilter public class implémente le filtre { public void execute (demande de String) { System.out.println ( "journal de la demande:" + demande); } }
Etape 3
Créer cible.
Target.java
public class cible { public void execute (demande de String) { System.out.println ( "Exécution de la demande:" + demande); } }
Etape 4
Créer une chaîne de filtre.
FilterChain.java
import java.util.ArrayList; import java.util.List; public class FilterChain { Liste privée <Filtre> filtres = new ArrayList <Filtre> (); cible cible privé; public void addFilter (filtre de filtre) { filters.add (filtre); } public void execute (demande de String) { pour (de filtre: filtres) { filter.execute (demande); } target.execute (demande); } setTarget public void (cible cible) { this.target = cible; } }
Etape 5
Créer Gestionnaire de filtres.
FilterManager.java
public class FilterManager { FilterChain filtreChaine; publique FilterManager (objectif cible) { filtreChaine = new FilterChain (); filterChain.setTarget (cible); } public void setFilter (filtre de filtre) { filterChain.addFilter (filtre); } filterRequest public void (demande String) { filterChain.execute (demande); } }
Etape 6
Création d'un client de client.
Client.java
public class client { FilterManager filterManager; setFilterManager public void (FilterManager filterManager) { this.filterManager = filterManager; } public void sendRequest (Demande de String) { filterManager.filterRequest (demande); } }
Etape 7
Utilisez leclientpour démontrer le modèle de conception de filtre Intercepter.
FrontControllerPatternDemo.java
public class InterceptingFilterDemo { main (String [] args) {public static void FilterManager filterManager = new FilterManager (nouvelle cible ()); filterManager.setFilter (nouveau AuthenticationFilter ()); filterManager.setFilter (nouveau DebugFilter ()); client client = new client (); client.setFilterManager (filterManager); client.sendRequest ( "HOME"); } }
Etape 8
Vérifiez la sortie.
demande Authentifier: HOME demande journal: HOME Exécution de la demande: HOME