1. Resumen general
1. El autor habla brevemente de ello
Demos un ejemplo simple de nuestra vida diaria. Cuando vamos a una agencia de bienes raíces para alquilar una casa, la agencia de bienes raíces forma un intermediario entre el inquilino y el arrendador del propietario. Al inquilino no le importa a quién alquila. Al arrendador del propietario no le importa a quién alquila. Esta transacción se volvió tan conveniente debido a la existencia de un intermediario.
Durante el proceso de desarrollo de software, inevitablemente habrá una situación en la que múltiples clases o subsistemas interactúen entre sí, y la interacción es muy complicada, lo que dará como resultado que cada clase tenga que conocer las clases con las que debe interactuar, para que su acoplamiento parezca extremadamente poderoso. Todo el cuerpo se ve afectado por un movimiento, y las consecuencias son muy graves, ¡y el gran oso está muy enojado! ~~~~ (> _ <) ~~~~
De acuerdo, dado que se ha planteado la pregunta, invite a nuestro protagonista en este tema: el modelo intermediario a aparecer.
La función del intermediario es encapsular la interacción entre objetos. Si las operaciones de un objeto causan cambios en otros objetos relacionados, y este objeto no quiere manejar estas relaciones por sí solo, entonces puede encontrar un intermediario y dejar que maneje estas relaciones problemáticas. Ver el siguiente pequeño ejemplo:
La copia del código es la siguiente:
VAR participante = función (nombre) {
this.name = name;
this.chatroom = nulo;
};
Participante.prototype = {
enviar: función (mensaje, a) {
this.chatroom.send (mensaje, esto, to);
},
Recibir: función (mensaje, desde) {
log.add (from.name + "a" + this.name + ":" + mensaje);
}
};
var chatroom = function () {
VAR participantes = {};
devolver {
Registrar: función (participante) {
participantes [participante.name] = participante;
participante.chatroom = this;
},
Enviar: función (mensaje, desde, a) {
if (to) {
to.receive (mensaje, desde);
} demás {
para (clave en los participantes) {
if (participantes [clave]! == desde) {
participantes [clave] .Receive (mensaje, desde);
}
}
}
}
};
};
var log = (function () {
var log = "";
devolver {
Agregar: function (msg) {log + = msg + "/n"; },
show: function () {alert (log); log = ""; }
}
}) ();
function run () {
var yoko = nuevo participante ("Yoko");
var John = nuevo participante ("John");
var paul = nuevo participante ("Pablo");
var ringo = nuevo participante ("ringo");
Var chatroom = nueva sala de chat ();
chatroom.register (Yoko);
sala de chat.Register (John);
sala de chat.register (Paul);
sala de chat.register (ringo);
Yoko.send ("Todo lo que necesitas es amor");
Yoko.send ("Te amo John");
John.send ("Hola, no es necesario transmitir", Yoko);
Paul.send ("¡Ja, escucho eso!");
Ringo.send ("Paul, ¿qué piensas?", Paul);
log.show ();
}
En el código de muestra tenemos cuatro participantes, únase a la sesión de chat registrando una sala de chat (medios). Representante de participantes para cada participante. Los participantes se envían mensajes entre sí y procesan rutas a salas de chat.
Los objetos de la sala de chat aquí juegan el papel de intermediario, coordinan otros objetos, los organizan razonablemente y reducen el acoplamiento.
2. Referencia del caso del código fuente
Deberíamos estar muy familiarizados con el modelo sólido del modelo de tres capas MVC (modelo), la capa de presentación de vista (Vista) y la capa de control (control/mediador).
La capa de control es el intermediario entre la capa de presentación y la capa del modelo. En términos generales, MVC también es una aplicación del modelo intermediario en el diseño de marco.
3. Introducción del caso
La copia del código es la siguiente:
Function Player (nombre) {
this.Points = 0;
this.name = name;
}
Player.prototype.play = function () {
this.Points += 1;
mediador.played ();
};
Var Scoreboard = {
elemento: document.getElementById ('resultados'),
ACTUALIZACIÓN: FUNCIÓN (SUPTER) {
var i, msg = '';
para (i en puntaje) {
if (score.hasownproperty (i)) {
msg + = '<p> <strong>' + i + '<// strong>:';
msg += stork [i];
msg += '<// p>';
}
}
this.element.innerhtml = msg;
}
};
Var Mediator = {
Jugadores: {},
configurar: function () {
Var Players = this.players;
jugadores.home = nuevo jugador ('casa');
jugadores.guest = nuevo jugador ('invitado');
},
jugado: function () {
Var Players = this.players,
puntaje = {
Inicio: jugadores.home.points,
Invitado: jugadores.guest.points
};
marcador.update (puntaje);
},
KeyPress: function (e) {
E = E || Window.event;
if (E. which === 49) {
mediator.players.home.play ();
devolver;
}
if (E. which === 48) {
mediator.players.guest.play ();
devolver;
}
}
};
mediator.setup ();
Window.OnkeyPress = Mediator.KeyPress;
setTimeOut (function () {
Window.OnkeyPress = nulo;
console.log ('¡Juego Over!');
}, 30000);
Cuatro, resumamos
¿Por qué mediador?
Hay muchas interacciones entre objetos. Las operaciones de comportamiento de cada objeto dependen entre sí para modificar el comportamiento de un objeto, y al mismo tiempo implica modificar el comportamiento de muchos otros objetos.
Si usa el modo mediador, el acoplamiento entre cada objeto puede aflojarse. Solo necesita preocuparse por la relación con el mediador y convertir la relación de muchos a muchos en una relación de uno a muchos.
Puede reducir la complejidad del sistema y mejorar la escalabilidad modificable.
Ocasiones utilizando el modelo intermediario
1. Un conjunto bien definido de objetos que ahora requieren una comunicación compleja.
2. Personalice un comportamiento distribuido en múltiples clases sin querer generar demasiadas subclases.
Se puede ver que los objetos de mediación se usan principalmente para encapsular el comportamiento, y los participantes en el comportamiento son esos objetos, pero a través del mediador, estos objetos no necesitan conocerse. (Implementación específica de la ley de Dimit)
Ventajas del uso del modelo intermediario:
1. Reduce el acoplamiento entre los objetos del sistema, lo que hace que los objetos sean fáciles de reutilizar de forma independiente.
2. Mejorar la flexibilidad del sistema y hacer que el sistema sea fácil de expandir y mantener.
Desventajas del uso del patrón mediador:
Las desventajas del modelo intermediario son obvias, porque este "intermediario" asume más responsabilidades, por lo que una vez que hay un problema con el objeto intermediario, todo el sistema se verá muy afectado.