Cet article décrit la mise en œuvre des fonctions de salle de chat multi-personnes basées sur le mode intermédiaire. Partagez-le pour votre référence, comme suit:
Une définition de modèle
Le motif de médiateur utilise un objet médiateur pour encapsuler l'interaction entre une série d'objets, de sorte que d'autres instances d'objet ne doivent pas être affichées dans chaque objet, réduisant ainsi le degré de couplage entre chaque objet et modifiant la relation d'interaction entre les objets indépendamment.
Exemples du deuxième mode
1 analyse de modèle
Nous empruntons des salles de chat multi-personnes pour illustrer ce modèle
2 Diagramme de classe statique du mode de médiation
3 exemples de code
3.1 Interface intermédiaire - IMEDIATEUR
package com.demo.mediator; import com.demo.colleague.iuseer; / ** * Interface intermédiaire * * @author * * / interface publique iMediator {/ ** * Informations utilisateur enregistrées * * @param utilisateur * / public void Enregistrement (user iSer); / ** * Envoyer un message à tout le monde * * @param utilisateur * Envoyer un message * / public void notifyallMessage (user iUser);}3.2 Mise en œuvre intermédiaire - ConcretMediator
Package Com.demo.Mediator; Importer java.util.arraylist; import java.util.iterator; import java.util.list; import com.demo.colleague.iuseer; / ** * Classe d'implémentation intermédiaire * * @Author * * / public class Concetemediator Impldences Implements isentor {private Final List <IUSER> List> List>; iUser> (); / ** * Informations utilisateur enregistrées * * @param utilisateur * / public void Regist (user iUser) {if (user! = Null &&! List.contains (user)) {list.add (user); }} / ** * Envoyer un message * * @param utilisateur * Envoyer un message * / public void notifyallMessage (iSer User) {iterator <iuser> iterator = list.iterator (); IUser tmpuser = null; while (iterator.hasnext ()) {tmpuser = iterator.next (); if (tmpuser! = null &&! tmpuser.equals (user)) {// exclure l'expéditeur de message tmpuser.receiveMessage (user.getMessage ()); }}}}3.3 Interface utilisateur - iUser
package com.demo.colleague; / ** * Interface utilisateur * * @Author * * / interface publique iUser {/ ** * Recevoir Message * * @param message * Message * / public void receiveMessage (message de chaîne); / ** * Envoyer le message * * @param message * Message * / public void sendMessage (message de chaîne); / ** * Obtenez le contenu du message envoyé * * @return * / public String getMessage ();}3.4 AbstractUser - AbstractUser
package com.demo.colleague; import com.demo.mediator.imedator; / ** * Résumé des informations utilisateur * * @author * * / public abstract Class AbstractUser implémente iUser {// médiateur iMediator intermédiaire protégé; // Nom Protected String Name; // message de chaîne protégée par message; Public AbstractUser (médiateur iMedator, nom de chaîne) {this.mediator = médiateur; this.name = name; } / ** * Envoyer un message * * @param Message * Message * / public void sendMessage (String Message) {this.Message = message; System.out.println (this.name + "Say:" + this.Message); médiateur.NotifyAllMessage (this); } public String getMessage () {return message; }}3.5 Utilisateur A - USERA
package com.demo.colleague; import com.demo.mediator.imediator; / ** * utilisateur a * * @author * * / public class usera étend abstractUser {public usera (iMediator Mediator) {super (médiateur, nom); // Inscrivez-vous dans le médiateur.Regist (this); } / ** * Méthode de message de réception * / public void Recomessage (Message de chaîne) {System.out.println ("User un message reçu:" + message); }}3.6 Utilisateur B - UserB
package com.demo.colleague; import com.demo.mediator.imediator; / ** * utilisateur b * * @author * * / public class userB étend AbstractUser {public userB (iMediator Mediator, String Name) {super (médiateur, nom); // Inscrivez-vous dans l'objet médiateur médiateur.Regist (this); } / ** * Méthode de message de réception * / public void receiveMessage (String Message) {System.out.println ("User b Message reçu:" + message); }}3.7 Utilisateur C - User
package com.demo.colleague; import com.demo.mediator.imediator; / ** * utilisateur C * * @author * * / public class user étend AbstractUser {public user (iMediator Mediator, String Name) {super (médiateur, nom); // Inscrivez-vous dans l'objet médiateur médiateur.Regist (this); } / ** * Méthode de message de réception * / public void receiveMessage (String Message) {System.out.println ("User C Message reçu:" + message); }}3.8 Exécution d'une salle de chat multijoueur
Package Com.demo; Import com.demo.colleague.iger; import com.demo.colleague.usera; import com.demo.colleague.userb; import com.demo.colleague.userc; import com.demo.mediator.concretemediator; importation co.demo.Mediator.IMediator; / ** * principale application * @Auhor; * / public class Client {/ ** * @param args * / public static void main (String [] args) {// Créer une salle de chat (médiateur) iMediateur médiateur = new ConcreteMediator (); // Créer des informations utilisateur iUser usera = new Usera (Mediator, "Zhang San"); IUser userB = new UserB (médiateur, "li si"); IUser user = new user (médiateur, "wang wu"); Système. .println("=================================================================================================== ============================================================================================================================. ============================================================================================================. ============================================================================================================================. .println ("===============================================================. ==========================================================================. ==========================================================================. ============================================================================. ==========================================================================. ==========================================================================. ==========================================================================. ============================================================================. .println ("===============================================================. ==========================================================================. ==========================================================================. ============================================================================. ==========================================================================. ==========================================================================. ==========================================================================. ============================================================================. .println ("==============================================================================================================================4 Résultats en cours d'exécution
=======================================================================================.
Zhang San a dit: Bonjour à tous, je m'appelle Zhang San! Je suis nouveau pour vous, prenez soin de moi!
Utilisateur B Message a reçu: Bonjour à tous, je m'appelle Zhang San! Je suis nouveau pour vous, prenez soin de moi!
Utilisateur C Message reçu: Bonjour à tous, je m'appelle Zhang San! Je suis nouveau pour vous, prenez soin de moi!
=======================================================================================.
=======================================================================================.
Li si a dit: Bonjour, je m'appelle Li si, bienvenue à rejoindre!
Utilisateur A Message reçu: Bonjour, je m'appelle Li SI, bienvenue pour rejoindre!
Utilisateur C Message a reçu: Bonjour, je m'appelle Li SI, bienvenue pour rejoindre!
=======================================================================================.
=======================================================================================.
Wang Wu a dit: Je suis Wang Wu, bienvenue!
Utilisateur A Message reçu: Je suis Wang Wu, bienvenue!
Utilisateur B a reçu un message: je suis Wang Wu, bienvenue!
=======================================================================================.
Trois principes de conception de ce modèle
1 Les dépendances d'objets un à plusieurs sont converties en dépendances un à un
2 Le contrôle centralisé améliore la réutilisabilité de la classe
Quatre occasions d'utilisation
(1) Un groupe d'objets communique d'une manière bien définie mais complexe, ce qui se traduit par une structure d'interdépendance déroutante et difficile à comprendre. Faites attention à l'interdépendance entre plusieurs objets.
(2) Vous souhaitez personnaliser un comportement distribué dans plusieurs classes, mais je ne veux pas générer trop de sous-classes.
(3) La recherche et le développement de l'architecture des produits nécessitent plus d'opportunités pour se développer.
Diagramme de classe statique en mode intermédiaire intermédiaire
Pour plus de contenu lié à Java, les lecteurs qui sont intéressés par ce site peuvent afficher les sujets: "Introduction et tutoriel avancé sur la programmation Java Oriented Oriented", "Tutorial sur la structure de données Java et l'algorithme", "Résumé des compétences de l'opération Java Dom Dom", "Résumé des compétences de l'opération Java et de l'opération de répertoire" et "Résumé de Java Cache Skills"
J'espère que cet article sera utile à la programmation Java de tous.