Latest web development tutorials

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.

Intercepter modèle de filtre diagramme UML

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