Este artigo descreve a implementação de funções da sala de bate-papo em várias pessoas com base no modo intermediário. Compartilhe -o para sua referência, como segue:
Uma definição de padrão
O padrão mediador usa um objeto mediador para encapsular a interação entre uma série de objetos, para que outras instâncias do objeto não precisem ser exibidas em cada objeto, reduzindo assim o grau de acoplamento entre cada objeto e alterando a relação de interação entre objetos de forma independente.
Exemplos do segundo modo
1 Análise de padrão
Emprestamos salas de bate-papo emprestadas para ilustrar este padrão
2 Diagrama de classe estática no modo de mediação
3 exemplos de código
3.1 Interface intermediária - imediador
pacote com.demo.mediator; importar com.demo.colleague.iuser;/** * interface intermediária * * @author * */interface pública imediador {/** * Informações do usuário registradas * * @param User */public void Registration (iUser User); / *** Envie a mensagem para todos** @param User* Enviar mensagem*/ public void notifyAllMessage (usuário iuser);}3.2 Implementação intermediária - concretemediador
pacote com.demo.mediator; importar java.util.ArrayList; importar java.util.iterator; importar java.util.list; importar com.demo.colleague.iuser;/** * Classe de implementação intermediária * * @author */listar a classe pública concretor concretor implementa imediador {private {particular ArrayList <iuser> (); / ** * Informações do usuário registradas * * @param User */ public void Regist (usuário do iuser) {if (user! = Null &&! List.contains (user)) {list.add (user); }} / *** Enviar mensagem** @param Usuário* Enviar mensagem* / public void notifyAllMessage (usuário do iuser) {iterator <iuser> iterator = list.iterator (); Iuser tmpuser = null; while (iterator.hasnext ()) {tmpuser = iterator.Next (); if (tmpuser! = null &&! tmpuser.equals (user)) {// exclui o remetente da mensagem tmpuser.receiveMessage (user.getMessage ()); }}}}3.3 Interface do usuário - iuser
pacote com.demo.colleague;/** * interface do usuário * * @Author * */interface pública iUser {/** * Receba mensagem * * @param mensagem * mensagem */public void recembemessage (mensagem string); / *** Enviar mensagem** @param mensagem* mensagem*/ public void sendMessage (mensagem de string); / ** * Obtenha o conteúdo da mensagem enviado * * @return */ public String getMessage ();}3.4 AbstractUser - AbstractUser
pacote com.demo.colleague; importar com.demo.mediator.imedator;/** * Informações abstratas do usuário * * @Author * */public abstrate clast abstractuser implementa IUSER {// mediador de imediador protegido intermediário intermediário; // nome de string protegido Nome; // mensagem de string protegida por mensagem; public abstractUser (mediador do imedador, nome da string) {this.mediator = mediador; this.name = nome; } / *** Envie uma mensagem** @param mensagem* mensagem* / public void sendMessage (string message) {this.message = message; System.out.println (this.name + "diga:" + this.message); mediator.NotifyAllMessage (isto); } public string getMessage () {return message; }}3.5 Usuário A - Usera
pacote com.demo.colleague; importar com.demo.mediator.imediator;/** * Usuário a * * @author * */public class usera estende abstractuser {public usera (mediador imediador, nome da string) {super (mediator, nome); // Registre -se no mediator.regist (this); } / *** Método da mensagem de recebimento* / public void Receivemessage (string message) {System.out.println ("Usuário uma mensagem recebida:" + mensagem); }}3.6 Usuário B - Usuáriob
pacote com.demo.colleague; importar com.demo.mediator.imediator;/** * usuário b * * @author * */public classe userb estende abstrateUser {public userb (mediador imediador, nome da string) {super (mediator, nome); // Registre -se no objeto mediador mediador.regist (this); } / *** Método de mensagem de recebimento* / public void ReceivEMessage (string message) {System.out.println ("Usuário b mensagem recebida:" + mensagem); }}3.7 Usuário C - UserC
pacote com.demo.colleague; importar com.demo.mediator.imediator;/** * Usuário c * * @author * */classe pública userc estende abstrateUser {public userc (mediador imediador, nome da string) {super (mediator, nome); // Registre -se no objeto mediador mediador.regist (this); } / *** Método da mensagem de recebimento* / public void Receivemessage (string message) {System.out.println ("Usuário C Mensagem recebeu:" + mensagem); }}3.8 Executando uma sala de bate -papo multiplayer
pacote com.demo; importar com.demo.colleague.iuser; importar com.demo.colleague.usera; importar com.demo.colleague.userb; import com.demo.colleague.userc; import com.demo.mediator.concretemediator; import.MemoMoMim; */public class Client {/** *@param args */public static void main (string [] args) {// Crie uma sala de bate -papo (mediador) mediador imediador = new concretemediator (); // Crie informações do usuário iuser usera = new usera (mediador, "zhang san"); Iuser userb = new userb (mediador, "li si"); Iuser userc = novo userC (mediador, "wang wu"); System.out .println("=================================================================================================== ============================================================================================================== ============================================================================================================= ============================================================================================================== .println ("======================================================== ================================================================== ================================================================== ==================================================================== ================================================================== ================================================================== ================================================================== ==================================================================== .println ("======================================================== ================================================================== ================================================================== ==================================================================== ================================================================== ================================================================== ================================================================== ==================================================================== .println ("================================================================================/N}4 resultados de execução
=======================================================================================
Zhang San disse: Olá a todos, meu nome é Zhang San! Eu sou novo para você, por favor, cuide de mim!
Usuário B Mensagem Recebida: Olá a todos, meu nome é Zhang San! Eu sou novo para você, por favor, cuide de mim!
Usuário C Mensagem recebeu: Olá a todos, meu nome é Zhang San! Eu sou novo para você, por favor, cuide de mim!
=======================================================================================
=======================================================================================
Li Si disse: Olá, meu nome é Li Si, bem -vindo para participar!
Usuário Uma mensagem recebida: Olá, meu nome é Li Si, bem -vindo para participar!
Usuário C Mensagem recebeu: Olá, meu nome é Li Si, bem -vindo a participar!
=======================================================================================
=======================================================================================
Wang Wu disse: Eu sou Wang Wu, bem -vindo!
Usuário Uma mensagem recebida: Eu sou Wang Wu, bem -vindo!
Mensagem do Usuário B recebeu: Eu sou Wang Wu, bem -vindo!
=======================================================================================
Três princípios de design deste padrão
1 Dependências de objetos individuais são convertidos em dependências individuais
2 O controle centralizado melhora a reutilização da classe
Quatro ocasiões de uso
(1) Um grupo de objetos se comunica de maneira bem definida, mas complexa, resultando em uma estrutura de interdependência confusa e difícil de entender. Preste atenção à interdependência entre vários objetos.
(2) Deseja personalizar um comportamento distribuído em várias classes, mas não deseja gerar muitas subclasses.
(3) A pesquisa e desenvolvimento da arquitetura de produtos requer mais oportunidades para expandir.
Diagrama de classes estática do modo intermediário
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"
Espero que este artigo seja útil para a programação Java de todos.