Design Patterns - Mediator Pattern

Das Mediatormuster wird verwendet, um die Kommunikationskomplexität zwischen mehreren Objekten oder Klassen zu verringern. Dieses Muster stellt eine Mediator-Klasse bereit, die normalerweise die gesamte Kommunikation zwischen verschiedenen Klassen abwickelt und die einfache Wartung des Codes durch lose Kopplung unterstützt. Das Mediatormuster fällt unter die Kategorie Verhaltensmuster.

Implementierung

Wir demonstrieren das Mediatormuster anhand eines Chatrooms, in dem mehrere Benutzer Nachrichten an den Chatroom senden können. Es liegt in der Verantwortung des Chatrooms, die Nachrichten allen Benutzern anzuzeigen. Wir haben zwei Klassen ChatRoom und User erstellt . Benutzerobjekte verwenden die ChatRoom- Methode, um ihre Nachrichten freizugeben .

MediatorPatternDemo , unsere Demo-Klasse, verwendet Benutzerobjekte , um die Kommunikation zwischen ihnen anzuzeigen.

Schritt 1

Mediator-Klasse erstellen.

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);
   }
}

Schritt 2

Benutzerklasse erstellen

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);
   }
}

Schritt 3

Verwenden Sie das Benutzerobjekt , um die Kommunikation zwischen ihnen anzuzeigen.

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!");
   }
}

Schritt 4

Überprüfen Sie die Ausgabe.

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