1. Resumo geral
1. O autor fala brevemente sobre isso
Vamos dar um exemplo simples de nossa vida diária. Quando vamos a uma agência imobiliária para alugar uma casa, a agência imobiliária forma um intermediário entre o inquilino e o arrendador do proprietário. O locatário não se importa com quem ele aluga. O arrendador do proprietário não se importa com quem ele aluga. Essa transação se tornou tão conveniente devido à existência de um intermediário.
Durante o processo de desenvolvimento de software, inevitavelmente haverá uma situação em que várias classes ou subsistemas interagem entre si, e a interação é muito complicada, resultando em cada classe conhecer as classes com as quais precisa interagir, para que seu acoplamento pareça extremamente poderoso. Todo o corpo é afetado por um movimento, e as consequências são muito graves, e o grande urso está muito zangado! ~~~~ (> _ <) ~~~~
Ok, como a pergunta foi levantada, convide nosso protagonista nesta edição - o modelo intermediário para aparecer.
A função do intermediário é encapsular a interação entre objetos. Se as operações de um objeto causarão alterações em outros objetos relacionados, e esse objeto não deseja lidar com esses relacionamentos por si só, você poderá encontrar um intermediário e deixá -lo lidar com esses relacionamentos problemáticos. Veja o seguinte pequeno exemplo:
A cópia do código é a seguinte:
var participante = função (nome) {
this.name = nome;
this.chatroom = nulo;
};
Participante.prototype = {
Enviar: function (mensagem, para) {
this.chatroom.send (mensagem, isto, para);
},
Receba: function (mensagem, de) {
log.add (de.name + "para" + this.name + ":" + mensagem);
}
};
var chatroom = function () {
var participantes = {};
retornar {
registro: função (participante) {
participantes [participante.name] = participante;
participante.chatroom = this;
},
Send: function (mensagem, de, para) {
if (to) {
to.receive (mensagem, de);
} outro {
para (chave nos participantes) {
if (participantes [key]! == de) {
participantes [chave] .receive (mensagem, de);
}
}
}
}
};
};
var log = (function () {
var log = "";
retornar {
Add: function (msg) {log + = msg + "/n"; },
Mostrar: function () {alert (log); log = ""; }
}
}) ();
function run () {
var yoko = novo participante ("yoko");
var John = novo participante ("John");
var Paul = novo participante ("Paul");
var ringo = novo participante ("ringo");
var chatroom = nova sala de chat ();
Chatroom.register (yoko);
Chatroom.register (John);
Chatroom.register (Paul);
Chatroom.register (ringo);
Yoko.send ("Tudo que você precisa é de amor");
Yoko.send ("Eu te amo John.");
John.send ("Ei, não há necessidade de transmitir", Yoko);
Paul.send ("Ha, eu ouço isso!");
ringo.send ("Paul, o que você acha?", Paul);
log.show ();
}
No código de amostra, temos quatro participantes, juntam -se à sessão de bate -papo registrando uma sala de bate -papo (mediária). Representante dos participantes para cada participante. Os participantes enviam mensagens e processam rotas para as salas de bate -papo.
Os objetos da sala de bate -papo aqui desempenham o papel de intermediário, coordenam outros objetos, organizam -os razoavelmente e reduzem o acoplamento.
2. Referência do caso do código -fonte
Deveríamos estar muito familiarizados com o modelo Solid Model Solid (modelo) do modelo de três camadas do MVC, ver a camada de apresentação (Visualização) e a camada de controle (controle/mediador).
A camada de controle é o intermediário entre a camada de apresentação e a camada do modelo. De um modo geral, o MVC também é uma aplicação do modelo intermediário no design da estrutura.
3. Introdução ao caso
A cópia do código é a seguinte:
Player de função (nome) {
this.points = 0;
this.name = nome;
}
Player.prototype.play = function () {
this.points += 1;
mediator.played ();
};
varboard var = {
Elemento: Document.getElementById ('Results'),
ATUALIZAÇÃO: function (pontuação) {
var i, msg = '';
para (i na pontuação) {
if (score.HasownProperty (i)) {
msg + = '<p> <strong>' + i + '<// fort>:';
msg += pontuação [i];
msg += '<// p>';
}
}
this.Element.innerhtml = msg;
}
};
var mediador = {
jogadores: {},
configuração: function () {
var players = this.players;
players.home = novo jogador ('casa');
Players.Guest = New Player ('Guest');
},
jogado: function () {
var players = this. jogadores,
pontuação = {
Home: Players.home.points,
Convidado: Players.guest.points
};
scoreboard.update (pontuação);
},
keypress: function (e) {
e = e || Window.Event;
if (e.which === 49) {
mediator.players.home.play ();
retornar;
}
if (e.which === 48) {
mediator.players.guest.play ();
retornar;
}
}
};
mediator.setup ();
window.onkeypress = mediator.keypress;
setTimeout (function () {
window.onkeypress = null;
console.log ('jogo over!');
}, 30000);
Quatro, vamos resumir
Por que mediador?
Existem muitas interações entre objetos. As operações comportamentais de cada objeto dependem uma da outra para modificar o comportamento de um objeto e, ao mesmo tempo, envolve a modificação do comportamento de muitos outros objetos.
Se você usar o modo mediador, o acoplamento entre cada objeto poderá ser afrouxado. Você só precisa se preocupar com o relacionamento com o mediador e transformar o relacionamento de muitos para muitos em um relacionamento um para muitos.
Pode reduzir a complexidade do sistema e melhorar a escalabilidade modificável.
Ocasiões usando modelo intermediário
1. Um conjunto bem definido de objetos que agora requerem comunicação complexa.
2. Personalize um comportamento distribuído em várias classes sem querer gerar muitas subclasses.
Pode -se observar que os objetos de mediação são usados principalmente para encapsular o comportamento, e os participantes do comportamento são esses objetos, mas através do mediador, esses objetos não precisam se conhecer. (Implementação específica da lei de Dimit)
Vantagens de usar o modelo intermediário:
1. Reduz o acoplamento entre os objetos do sistema, facilitando a reutilização dos objetos de forma independente.
2. Melhore a flexibilidade do sistema e facilite a expansão e a manutenção do sistema.
Desvantagens do uso do padrão do mediador:
As desvantagens do modelo intermediário são óbvias, porque esse "intermediário" assume mais responsabilidades; portanto, uma vez que haja um problema com o objeto intermediário, todo o sistema será bastante afetado.