modèle intermédiaire


Le modèle Mediator est utilisé pour réduire la complexité de la communication entre plusieurs objets et classes. Ce modèle fournit une classe intermédiaire qui gère généralement la communication entre différentes classes et prend en charge le couplage lâche, ce qui rend le code plus facile à maintenir. Le modèle médiateur est un modèle comportemental.

Introduction

Intention : Utiliser un objet médiateur pour encapsuler une série d'interactions d'objets. Le médiateur permet à chaque objet de se coupler sans se référencer explicitement, et peut le faire. modifier indépendamment leurs interactions.

Solution principale : Il existe un grand nombre de relations entre les objets, ce qui rendra inévitablement la structure du système très compliquée. En même temps, si un objet change, nous en avons également besoin. pour suivre et les objets associés et effectuer le traitement correspondant en même temps.

Quand utiliser : Plusieurs classes sont couplées les unes aux autres, formant une structure de réseau.

Comment résoudre : Séparez la structure maillée ci-dessus en une structure en étoile.

Code clé : La communication entre l'objet Collègue est encapsulée dans une classe et gérée séparément.

Exemples d'application : 1. Avant que la Chine n'adhère à l'OMC, les pays faisaient du commerce entre eux, et la structure était désormais complexe. 2. Système de répartition aéroportuaire. 3. Framework MVC, dans lequel C (contrôleur) est le médiateur entre M (modèle) et V (vue).

Avantages : 1. Réduisez la complexité de la classe et convertissez un à plusieurs en un à un. 2. Découplage entre différentes classes. 3. Respectez le principe Dimit.

Inconvénients : L'intermédiaire sera volumineux, complexe et difficile à entretenir.

Scénarios d'utilisation : 1. Il existe des relations de référence relativement complexes entre les objets du système, ce qui entraîne une structure de dépendance confuse entre eux et rend difficile la réutilisation de l'objet. 2. Je souhaite utiliser une classe intermédiaire pour encapsuler les comportements dans plusieurs classes sans générer trop de sous-classes.

Remarque : ne doit pas être utilisé lorsque les responsabilités prêtent à confusion.

Mise en œuvre

Nous démontrons le modèle de médiateur à travers un exemple de salle de discussion. Dans ce cas, plusieurs utilisateurs peuvent envoyer des messages à la salle de discussion, et la salle de discussion affiche les messages à tous les utilisateurs. Nous allons créer deux classes ChatRoom et Utilisateur. Les objets Utilisateur utilisent la méthode ChatRoom pour partager leurs messages.

MediatorPatternDemo, notre classe de démonstration utilise des objets User pour montrer la communication entre eux.

mediator_pattern_uml_diagram.jpg

Étape 1

Créer une classe intermédiaire.

ChatRoom.java

import java.util.Date;

public class ChatRoom {
   public static void showMessage(User user, String message){
      System.out.println(new Date().toString()
         + " [" + user.getName() +"] : " + message);
   }
}

Étape 2

Créer une classe d'utilisateurs.

User.java

public class User {
   private String name;

   public String getName() {
      return name;
   }

   public void setName(String name) {
      this.name = name;
   }

   public User(String name){
      this.name  = name;
   }

   public void sendMessage(String message){
      ChatRoom.showMessage(this,message);
   }
}

Étape 3

Utilisez l'objet Utilisateur pour afficher la communication entre eux.

MediatorPatternDemo.java

public class MediatorPatternDemo {
   public static void main(String[] args) {
      User robert = new User("Robert");
      User john = new User("John");

      robert.sendMessage("Hi! John!");
      john.sendMessage("Hello! Robert!");
   }
}

Étape 4

Vérifiez la sortie.

Thu Jan 31 16:05:46 IST 2013 [Robert] : Hi! John!
Thu Jan 31 16:05:46 IST 2013 [John] : Hello! Robert!