Maison  >  Article  >  Java  >  Une exploration approfondie du modèle de chaîne de responsabilité dans les modèles de conception Java

Une exploration approfondie du modèle de chaîne de responsabilité dans les modèles de conception Java

WBOY
WBOYoriginal
2024-05-09 14:45:02849parcourir

Le modèle de chaîne de responsabilité est un modèle de conception qui vous permet de transmettre des requêtes à un ensemble d'objets dans l'ordre jusqu'à ce que la requête soit traitée ou que tous les objets tentent de la gérer. Il contient les composants suivants : gestionnaire, gestionnaire abstrait et client. Les avantages incluent : le couplage lâche, l’évolutivité et la réutilisabilité. Les chaînes de filtres sont un exemple pratique courant.

Une exploration approfondie du modèle de chaîne de responsabilité dans les modèles de conception Java

Une exploration approfondie du modèle de chaîne de responsabilité dans les modèles de conception Java

Introduction

Le modèle de chaîne de responsabilité est un modèle de conception qui vous permet de créer un ensemble d'objets qui gèrent les requêtes en séquence. Lorsqu'un objet ne peut pas gérer une requête, il transmet la requête à l'objet suivant de la chaîne.

Structure

Le modèle de chaîne de responsabilité contient les composants suivants :

  • Handler : un objet qui gère les requêtes.
  • Abstract Handler : Définissez l'interface de Handler.
  • Client : L'objet qui initie la demande.

Comment ça marche

Le modèle de chaîne de responsabilité fonctionne comme suit :

  1. Le client envoie une requête au premier processeur de la chaîne.
  2. Le processeur décide s'il doit traiter la demande. Si tel est le cas, traitez la demande et renvoyez le résultat. Dans le cas contraire, il transmet la requête au processeur suivant de la chaîne.
  3. Ce processus se répète jusqu'à ce qu'un processeur traite la demande ou que tous les processeurs de la chaîne aient tenté de traiter la demande.

Avantages

Il y a certains avantages à utiliser le modèle de chaîne de responsabilité :

  • Couplage lâche : Les processeurs sont indépendants les uns des autres, il est facile d'ajouter ou de supprimer des processeurs.
  • Extensibilité : Des étapes de traitement supplémentaires peuvent être facilement ajoutées selon les besoins.
  • Réutilisabilité : Les processeurs peuvent être réutilisés pour traiter différents types de demandes.

Cas pratique

Chaîne de filtres

La chaîne de filtres est un exemple courant d'utilisation du modèle de chaîne de responsabilité. Il consiste en un ensemble de filtres qui traitent les demandes de manière séquentielle. Si un filtre ne satisfait pas la requête, il transmet la requête au filtre suivant de la chaîne.

Un exemple simple de chaîne de filtres est le suivant :

public class FilterChain {

    private List<Filter> filters;

    public FilterChain(List<Filter> filters) {
        this.filters = filters;
    }

    public void doFilter(Request request, Response response) {
        for (Filter filter : filters) {
            filter.doFilter(request, response);
        }
    }
}

public interface Filter {
    
    void doFilter(Request request, Response response);
}

public class AuthenticationFilter implements Filter {

    @Override
    public void doFilter(Request request, Response response) {
        // 验证请求
    }
}

public class AuthorizationFilter implements Filter {

    @Override
    public void doFilter(Request request, Response response) {
        // 授权请求
    }
}

public class LoggingFilter implements Filter {

    @Override
    public void doFilter(Request request, Response response) {
        // 记录请求和响应
    }
}

public class Main {

    public static void main(String[] args) {
        FilterChain filterChain = new FilterChain(
            List.of(new AuthenticationFilter(),
                new AuthorizationFilter(),
                new LoggingFilter())
        );

        filterChain.doFilter(request, response);
    }
}

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn