Dieser Artikel beschreibt die Implementierung von Chatroom-Funktionen mit mehreren Personen basierend auf dem Vermittlermodus. Teilen Sie es für Ihre Referenz wie folgt weiter:
Eine Musterdefinition
Das Mediatormuster verwendet ein Mediatorobjekt, um die Wechselwirkung zwischen einer Reihe von Objekten zu verkapulieren, so dass andere Objektinstanzen in jedem Objekt nicht angezeigt werden müssen, wodurch der Kopplungsgrad zwischen jedem Objekt und die Änderung der Interaktionsbeziehung zwischen Objekten unabhängig voneinander reduziert wird.
Beispiele für den zweiten Modus
1 Musteranalyse
Wir leihen uns mehrköpfige Chatrooms aus, um dieses Muster zu veranschaulichen
2 Mediationsmodus Statische Klassendiagramm
3 Code Beispiele
3.1 Intermediary Grenzfläche - Imediator
Paket com.demo.mediator; import com.demo.colleague / *** Meldung an alle senden** @param user* meldung senden*/ public void musifyAllmessage (IUSER -Benutzer);}
3.2 Intermediary Implementation - Concretemediator
Paket com.demo.Mediator; Import Java.util.ArrayList; Import Java.util.iterator; Import Java.util.List; Com.demo.Colleague.iuser; / ** * Registrierte Benutzerinformationen * * @param user */ public void Regist (IUSER -Benutzer) {if (user! = Null &&! List.contains (user)) {list.add (user); }} / *** meldung senden** @param user* meldung senden* / public void musifyAllmessage (iuser user) {iterator <Iuser> iterator = list.iterator (); Iuser tmpuser = null; while (iterator.hasnext ()) {tmpuser = iterator.next (); if (tmpuser! = null &&! }}}}3.3 Benutzeroberfläche - IUSER
Paket com.demo.colleague;/** * Benutzeroberfläche * * @author * */public interface iuser {/** * Meldung empfangen * * @param meldung * meldung */public void forderesage (String -Nachricht); / *** Nachricht senden** @param meldung* meldung*/ public void sendMessage (String -Nachricht); / ** * den Nachrichteninhalt gesendet * * @return */ public String getMessage ();}3.4 Abstractuser - Abstractuser
Paket com.demo.colleague; import com.demo.mediator.imedator;/** * abstrakte Benutzerinformationen * * @Author * */public Abstract Class AbstractUser implementiert IUSER {// intermediär geschützte Imediator -Mediator; // Name Protected String Name; // Message Protected String Meldung; public Abstractuser (iMedator Mediator, String -Name) {this.Mediator = Mediator; this.name = name; } / *** eine Nachricht senden** @param meldung* meldung* / public void sendMessage (String -Nachricht) {this.message = message; System.out.println (this.name + "Say:" + this.message); mediator.notifyallmessage (this); } public String getMessage () {Rückgabenachricht; }}3.5 Benutzer A - Usera
Paket com.demo.colleague; import com.demo.mediator.imediator;/** * Benutzer a * * @author * */public class Usera erweitert AbstractUser {public Usera (Imediator Mediator, String Name) {Super (Mediator, Name); // Registrieren Sie sich im Mediator.regist (this); } / *** Meldungsmethode empfangen* / public void fordersage (String -Nachricht) {System.out.println ("Benutzer eine empfangene Nachricht:" + meldung); }}3.6 Benutzer B - Benutzerb
Paket com.demo.colleague; import com.demo.mediator.imediator;/** * Benutzer B * * @Author * */public class userB erweitert AbstractUser {public userB (Imediator Mediator, String Name) {Super (Mediator, Name); // Registrieren Sie sich im Mediator -Objektmediator.regist (this); } / *** Meldungsmethode empfangen* / public void fordersage (String message) {System.out.println ("Benutzer B empfangene Nachricht:" + meldung); }}3.7 Benutzer C - USERC.
Paket com.demo.colleague; import com.demo.mediator.imediator;/** * Benutzer c * * @Author * */public class Userc erweitert AbstractUser {public Userc (Imediator Mediator, String Name) {Super (Mediator, Name); // Registrieren Sie sich im Mediator -Objektmediator.regist (this); } / *** Meldungsmethode empfangen* / public void fordernessage (String -Nachricht) {System.out.println ("Benutzer c empfangene Nachricht:" + meldung); }}3.8 Ausführen eines Multiplayer -Chatraums
Paket com.demo; import com.demo.colleague.iuser; import com.demo.colleague */public class Client {/** *@param args */public static void main (String [] args) {// Erstellen Sie einen Chatraum (Mediator) Imediator Mediator = new Concretemediator (); // Benutzerinformationen iuser usera = new Usera (Mediator, "Zhang San") erstellen; IUSER userB = new userB (Mediator, "Li si"); IUSER UNSERC = NEUER USERC (Mediator, "Wang Wu"); System.out .println("=================================================================================================== =================================================================ieben ================================================================ieben =================================================================ieben .println("====================================================== ====================================================================== ====================================================================== ====================================================================== ====================================================================== ====================================================================== ====================================================================== ====================================================================== .println("====================================================== ====================================================================== ====================================================================== ====================================================================== ====================================================================== ====================================================================== ====================================================================== ====================================================================== .Println ("=======================================================================/n");4 Auslaufergebnisse
===========================================================ieben
Zhang San sagte: Hallo allerseits, mein Name ist Zhang San! Ich bin neu bei dir, bitte pass auf mich auf!
Benutzer B erhaltene Nachricht: Hallo allerseits, mein Name ist Zhang San! Ich bin neu bei dir, bitte pass auf mich auf!
Benutzer C erhaltene Nachricht: Hallo allerseits, mein Name ist Zhang San! Ich bin neu bei dir, bitte pass auf mich auf!
===========================================================ieben
===========================================================ieben
Li Si sagte: Hallo, mein Name ist Li Si, willkommen, mitzumachen!
Benutzer Eine empfangene Nachricht: Hallo, mein Name ist Li Si, Willkommen, sich anzuschließen!
Benutzer c erhaltene Nachricht: Hallo, mein Name ist Li Si, Willkommen, sich anzuschließen!
===========================================================ieben
===========================================================ieben
Wang Wu sagte: Ich bin Wang Wu, willkommen!
Benutzer Eine empfangene Nachricht: Ich bin Wang Wu, willkommen!
Benutzer B empfangene Nachricht: Ich bin Wang Wu, willkommen!
===========================================================ieben
Drei Prinzipien der Gestaltung dieses Musters
1 Eins-zu-Viele-Objektabhängigkeiten werden in Eins-zu-Eins-Abhängigkeiten umgewandelt
2 Zentralisierte Kontrolle verbessert die Wiederverwendbarkeit der Klasse
Vier Nutzungsanlässe
(1) Eine Gruppe von Objekten kommuniziert genau definiert, aber komplex, was zu einer verwirrenden und schwierigen Verständnis der gegenseitigen Abhängigkeit führt. Achten Sie auf die gegenseitige Abhängigkeit zwischen mehreren Objekten.
(2) möchten ein in mehreren Klassen verteiltes Verhalten anpassen, aber nicht zu viele Unterklassen generieren.
(3) Die Forschung und Entwicklung der Produktarchitektur erfordert mehr Möglichkeiten zum Ausbau.
Fünf Intermediary -Modus Statische Klassendiagramm
For more Java-related content, readers who are interested in this site can view the topics: "Introduction and Advanced Tutorial on Java Object-Oriented Programming", "Tutorial on Java Data Structure and Algorithm", "Summary of Java Operation DOM Node Skills", "Summary of Java File and Directory Operation Skills" and "Summary of Java Cache Operation Skills"
Ich hoffe, dieser Artikel wird für Java -Programme aller hilfreich sein.