La función del patrón mediador es desconectar la relación de acoplamiento estricta entre los objetos, que también se llama 'mediador'. Todos los objetos se comunican a través del objeto intermediario, en lugar de referirse entre sí, por lo que cuando un objeto cambia, solo necesita notificar al intermediario.
Por ejemplo: la torre de comando del aeropuerto, cada avión solo necesita comunicarse con la torre de comando. La torre de comando conoce el estado de vuelo de cada avión, puede organizar todos los tiempos de despegue y aterrizaje, ajustar las rutas, etc.
El modelo intermediario se ajusta a la ley dimitiana, es decir, el principio del menor conocimiento, lo que significa que un objeto debe saber lo menos posible sobre otro objeto. Si el acoplamiento entre objetos es demasiado alto, cambiar un objeto afectará a muchos objetos y es difícil de mantener. Cuando el acoplamiento del objeto es apretado, es difícil modificar un objeto sin afectar a los otros objetos.
Si el acoplamiento complejo entre objetos causa dificultades para llamar y mantener, y estos grados de acoplamiento crecen exponencialmente con los cambios en el proyecto, ¡entonces podemos considerar refactorizar el código con el patrón intermediario! Los mediadores mejoran la mantenibilidad del código a través del desacoplamiento.
Ejemplo 1: Juego
El objeto del jugador se crea a través del constructor jugador () y tiene sus propios puntos y atributos de nombre. El método Play () en el prototipo es responsable de agregar un punto a sí mismo y notificar al intermediario:
Function Player (nombre) {this.points = 0; this.name = name;} jugador.prototype.play = function () {this.points += 1; mediador.played ();};El objeto de marcador (marcador) tiene un método Update (), que el intermediario llama después de que cada jugador termine de jugar. El análisis no conoce ninguna información sobre el jugador, ni guarda puntajes. Solo es responsable de mostrar los puntajes dados por el intermediario:
var storkboard = {element: document.getElementById ('Results'), Update: function (score) {var i, msg = ''; para (i en score) {if (scATIG.HASOWNProperty (i)) {msg + = '<p> <strong>' + i + '<// strong>:'; msg += stork [i]; msg += '<// p>'; }} this.element.innerhtml = msg; }};Ahora echemos un vistazo al objeto mediador (mediador). Cuando se inicialice el juego, cree el jugador en el método Setup () y luego coloque el atributo del reproductor para el uso posterior. El jugador llamará al método Playe () después de cada ronda. Actualiza la tabla de hash de puntaje y luego la pasa al marcador para la pantalla. El último método es KeyPress (), que maneja los eventos de teclado, decide qué jugador lo juega y lo notifica:
var mediator = {Players: {}, setup: function () {var jugadores = this.players; jugadores.home = nuevo jugador ('casa'); jugadores.guest = nuevo jugador ('invitado'); }, jugado: function () {var Players = this.players, Score = {Home: Players.Home.Points, Guest: Players.Guest.Points}; marcador.update (puntaje); }, KeyPress: function (e) {e = e || Window.event; // es decir if (E.which === 49) {// clave "1" mediador.players.home.play (); devolver; } if (E. which === 48) {// clave "0" mediador.players.guest.play (); devolver; }}};Lo último es inicializar y terminar el juego:
// go! Mediator.setup (); Window.OnkeyPress = Mediator.KeyPress; // Juego en 30 segundos (function () {Window.OnkeyPress = null; alerta ('Juego Over!');}, 30000);Ejemplo 2: Vender un teléfono móvil
var goods = { //Inventory 'red|32G':3, 'red|16G':5, 'blue|32G':3, 'blue|16G':6}//Intermediator var mediator = (function(){ function id(id){ return document.getElementById(id); } var colorSelect = id('colorSelect'), memorySelect = id('memorySelect'), numberInput = id ('numberInput'), colorInfo = id ('colorInfo'), MemoryInfo = id ('MemoryInfo'), NumberInfo = id ('NumberInfo'), nextBtn = id ('nextBtn'); bienes [color+'|'+memoria]; NumberInfo.innerHtml = Número; nextbtn.disable = true; Mediator.Changed (this);} numberInput.onchange = function () {mediator.changed (this);}Referencias: "Patrón de JavaScript" "JavaScript Patrón de diseño y práctica de desarrollo"
Lo anterior es todo el contenido de este artículo. Espero que sea útil para el aprendizaje de todos y espero que todos apoyen más a Wulin.com.