Modelo intermediário
O design orientado a objetos incentiva a distribuição de comportamentos entre objetos, o que pode levar a muitas conexões entre objetos. Na pior das hipóteses, cada objeto precisa conhecer todos os outros objetos.
Embora a divisão de um sistema em muitos objetos possa aumentar a reutilização, o aumento dos objetos interconectados reduzirá sua reutilização. Um grande número de relações de conexão torna impossível para um objeto funcionar sem a assistência de outros objetos (o sistema se manifesta como um todo indivisível ) e é difícil fazer grandes alterações no comportamento do sistema no momento. Como o comportamento é distribuído entre muitos objetos, o resultado é que muitas subclasses devem ser definidas para personalizar o comportamento do sistema. Portanto, introduzimos o mediador do objeto mediador :
Através do objeto intermediário, o sistema da estrutura da malha pode ser transformado em uma estrutura estrela centrada no intermediário . Cada objeto específico não tem mais relacionamento direto com outro objeto, mas é mediado por ele através do objeto intermediário. A introdução do objeto intermediário também faz com que a estrutura do sistema não sofra um grande número de modificações devido à introdução de novos objetos.
Modo mediador: Também conhecido como modo mediador , usa um objeto mediador para encapsular a interação de uma série de objetos, para que cada objeto não precise ser exibido e referenciado um ao outro, afrouxando assim o acoplamento e alterando suas interações de forma independente :
(Fonte da imagem: Padrão de design: a base do software reutilizável orientado a objetos) Dicas: Cada colega conhece apenas a existência do mediador e não precisa saber se outros colegas existem (ou como dissociá-los). Ele só precisa enviar uma mensagem ao mediador e depois encaminhá -la para outros colegas ( o mediador armazena todos os relacionamentos de colega , e apenas o mediador sabe quantos/quais colegas existem).
Implementação de modo
As Nações Unidas encaminham declarações de vários países e medeia as relações com cada país:
Os estados enviam e recebem mensagens para o Conselho de Segurança da ONU, que 'apropriadamente' solicita solicitações entre estados para ação colaborativa:
Faculdade
Classe de colega abstrata, defina os métodos públicos de cada colega:
/** * @author jifang * @since 16/8/28 16:22. */Public Resumo Class Country {Mediador de Nações Unidas protegidas; nome de string privado; Public Country (mediador das unidades unidas, nome da string) {this.mediator = mediador; this.name = nome; } public string getName () {return name; } Declare abstrato protegido (string msg); Receba de vazio abstrato protegido (string msg);}----------------------------------------------------------------------------------
Concretecolleague
Colegas específicos:
• Toda aula de colega conhece seu objeto mediador.
• Cada objeto de colega se comunica com seu intermediário quando precisa se comunicar com outros colegas.
A classe EUA estende o país {public USA (mediador das Nações Unidas, nome da string) {super (mediador, nome); } @Override public void declarar (string msg) {mediator.declare (this, msg); } @Override public void receba (string msg) {System.out.println ("Estados Unidos recebidos: [" + msg + "]"); }} classe Iraque estende o país {public Iraque (mediador das Nações Unidas, nome da string) {super (mediador, nome); } @Override public void declarar (string msg) {mediator.declare (this, msg); } @Override public void receba (string msg) {System.out.println ("Iraque recebeu: [" + msg + "]"); }} classe China estende o país {public China (mediador das Nações Unidas, nome da string) {super (mediador, nome); } @Override public void declarar (string msg) {mediator.declare (this, msg); } @Override public void receba (string msg) {System.out.println ("China recebeu: [" + msg + "]"); }}----------------------------------------------------------------------------------
Mediador
Resumo Mediador: Defina uma interface para se comunicar com objetos de colega:
Classe Public Abstract UnitedNations {Lista protegida <Country> países = new LinkedList <> (); Public Void Register (país do país) {países.add (país); } public void remover (país país) {países.remove (país); } Void abstrato protegido (país país, string msg);}----------------------------------------------------------------------------------
Concretemediador
Intermediário específico:
• entender e manter seus colegas individuais;
• Realize o comportamento colaborativo coordenando cada objeto de colega (receba mensagens de colegas e emita ordens para colegas específicos).
classe UnitedNationsSecurityCouncil estende as unidades { / ** * O Conselho de Segurança medeia no meio * * @param country * @param msg * / @Override Protected void declarar (país do país, string msg) {para (string country: country) {if (! tocountry.receive (nome + "diga pacificamente:" + msg); }}}} Se não houver extensão, o mediador poderá ser combinado com o concretemediador em um.
•Cliente
public class Client {@Test public void client () {UnitedNations Mediator = new UnitedNationsSecurityCouncil (); País EUA = novo EUA (mediador, "EUA"); China do país = Nova China (mediador, "China"); Iraque do país = novo Iraque (mediador, "Iraque"); mediator.register (EUA); mediator.register (China); mediator.register (Iraque); EUA.Declare ("Quero atacar o Iraque, que se importa com quem eu sou com pressa !!!"); System.out.println ("--------------"); China.Declare ("Nós condenamos fortemente !!!"); System.out.println ("---------------------"); Iraque.Declare ("Vamos lá, venha se machucar !!!"); }}----------------------------------------------------------------------------------
resumo
O surgimento do mediador reduz o acoplamento entre cada faculdade, permitindo que o colega e o mediador fossem alterados e reutilizados independentemente. Como os objetos colaboram, a mediação é tomada como um conceito independente e encapsulada em um objeto, o foco da atenção é deslocado do comportamento de cada um dos objetos para a interação entre eles, para que o sistema possa ser visto de uma perspectiva mais macro.
• Aplicabilidade
O modelo intermediário é fácil de aplicar no sistema e é facilmente mal utilizado no sistema. Quando um grupo de objetos complexo "muitos para muitos" aparece no sistema, não se apresse em usar o intermediário. É melhor refletir primeiro se o design do sistema é razoável. Como o concretemediador controla a centralização, a complexidade da interação se torna a complexidade do intermediário, tornando o intermediário mais complexo do que qualquer concretecolleague. Recomenda -se usar o modelo intermediário nas seguintes situações:
◦ Um grupo de objetos se comunica de uma maneira bem definida, mas complexa. As interdependências resultantes são confusas e difíceis de entender.
◦ Um objeto refere -se a muitos outros objetos e se comunica diretamente com esses objetos, dificultando a reutilização do objeto.
◦ Deseja personalizar um comportamento distribuído entre várias classes, mas não deseja gerar muitas subclasses.
• Modos relacionados
◦Facade é diferente dos mediadores, pois abstrava um subsistema de objetos, fornecendo assim uma interface mais conveniente. Seu protocolo é unidirecional, ou seja, os objetos de fachada fazem solicitações a essa classe de subsistema, mas de outra forma não podem. Pelo contrário, o mediador fornece comportamentos de colaboração que não são suportados ou não podem ser suportados por cada objeto da faculdade, e o protocolo é multidirecional.
◦Colleague pode se comunicar com o mediador usando o modo Observer.
O exposto acima é todo o conteúdo deste artigo. Espero que seja útil para o aprendizado de todos e espero que todos apoiem mais o wulin.com.