1. Résumé global
1. L'auteur en parle brièvement
Donnons un exemple simple de notre vie quotidienne. Lorsque nous allons chez une agence immobilière pour louer une maison, l'agence immobilière constitue un intermédiaire entre le locataire et le bailleur du propriétaire. Le locataire ne se soucie pas de qui il loue. Le bailleur du propriétaire ne se soucie pas de qui il loue. Cette transaction est devenue si pratique en raison de l'existence d'un intermédiaire.
Au cours du processus de développement de logiciels, il y aura inévitablement une situation où plusieurs classes ou sous-systèmes interagissent les uns avec les autres, et l'interaction est très compliquée, ce qui fait que chaque classe devait connaître les classes avec lesquelles il doit interagir, afin que leur couplage apparaisse extrêmement puissant. Le corps entier est affecté par un seul coup, et les conséquences sont très graves, et le grand ours est très en colère! ~~~~ (> _ <) ~~~~
D'accord, puisque la question a été soulevée, veuillez inviter notre protagoniste dans ce numéro - le modèle intermédiaire à apparaître.
La fonction de l'intermédiaire consiste à résumer l'interaction entre les objets. Si les opérations d'un objet entraîneront des modifications à d'autres objets connexes, et que cet objet ne veut pas gérer ces relations en soi, vous pouvez trouver un intermédiaire et le laisser gérer ces relations gênantes. Voir le petit exemple suivant:
La copie de code est la suivante:
var participant = fonction (nom) {
this.name = name;
this.chatroom = null;
};
Participant.prototype = {
send: function (message, to) {
this.chatroom.send (message, this, to);
},
recevoir: fonction (message, de) {
log.add (from.name + "à" + this.name + ":" + message);
}
};
var Chatroom = function () {
var participants = {};
retour {
Registre: fonction (participant) {
participants [participant.name] = participant;
participant.chatroom = ceci;
},
Envoyer: fonction (message, de, à) {
if (to) {
à.receive (message, de);
} autre {
pour (clé dans les participants) {
if (participants [clé]! == From) {
participants [clé] .receive (message, de);
}
}
}
}
};
};
var log = (function () {
var log = "";
retour {
Ajouter: fonction (msg) {log + = msg + "/ n"; },
show: function () {alert (log); log = ""; }
}
}) ();
fonction run () {
var yoko = nouveau participant ("yoko");
var John = nouveau participant ("John");
var Paul = nouveau participant ("Paul");
var ringo = nouveau participant ("Ringo");
var Chatroom = new Chatroom ();
Chatroom.Register (Yoko);
Chatroom.Register (John);
Chatroom.Register (Paul);
Chatroom.Register (Ringo);
yoko.send ("Tout ce dont vous avez besoin est l'amour.");
Yoko.send ("Je t'aime John.");
John.send ("Hé, pas besoin de diffuser", Yoko);
Paul.send ("Ha, j'entends ça!");
Ringo.send ("Paul, qu'en pensez-vous?", Paul);
log.show ();
}
Dans l'exemple de code, nous avons quatre participants, rejoignez la session de chat en enregistrant une salle de chat (Mediary). Représentant des participants pour chaque participant. Les participants s'envoient des messages et traitent les itinéraires dans les salles de chat.
Les objets de salle de chat ici jouent le rôle de l'intermédiaire, coordonnent d'autres objets, les organisent raisonnablement et réduisent le couplage.
2. Référence du cas de code source
Nous devons être très familiers avec le modèle solide de modèle à trois couches MVC (modèle), la couche de présentation de la vue (vue) et la couche de contrôle (contrôle / médiateur).
La couche de contrôle est l'intermédiaire entre la couche de présentation et la couche de modèle. D'une manière générale, MVC est également une application du modèle intermédiaire dans la conception du cadre.
3. Introduction du cas
La copie de code est la suivante:
Fonction Player (name) {
this.points = 0;
this.name = name;
}
Player.prototype.play = function () {
this.points + = 1;
médiateur.played ();
};
Var Scoreboard = {
élément: document.getElementById («résultats»),
Mise à jour: fonction (score) {
var i, msg = '';
pour (i en score) {
if (score.hasownproperty (i)) {
msg + = '<p> <strong>' + i + '<// fort>:';
msg + = score [i];
msg + = '<// p>';
}
}
this.element.innerhtml = msg;
}
};
Var Mediator = {
Joueurs: {},
configuration: function () {
var Players = this.players;
Players.Home = nouveau joueur ('home');
Players.Guest = nouveau joueur ('invité');
},
joué: function () {
var joueurs = this.players,
score = {
Accueil: joueurs.home.points,
Invité: joueurs.Guest.points
};
Scoreboard.update (score);
},
DES VIEUX: FONCTION (E) {
E = E || window.event;
if (e.which === 49) {
mediator.players.home.play ();
retour;
}
if (e.which === 48) {
mediator.players.guest.play ();
retour;
}
}
};
Mediator.setup ();
window.onKeyPress = mediator.KeyPress;
setTimeout (function () {
window.onKeyPress = null;
Console.log («Game Over!»);
}, 30000);
Quatre, résumons
Pourquoi médiateur?
Il existe de nombreuses interactions entre les objets. Les opérations comportementales de chaque objet dépendent les unes des autres pour modifier le comportement d'un objet, et en même temps, il implique de modifier le comportement de nombreux autres objets.
Si vous utilisez le mode médiateur, le couplage entre chaque objet peut être desserré. Il vous suffit de vous soucier de la relation avec le médiateur et de transformer la relation plusieurs à plusieurs en une relation un à plusieurs.
Il peut réduire la complexité du système et améliorer l'évolutivité modifiable.
Occasions utilisant un modèle intermédiaire
1. Un ensemble bien défini d'objets qui nécessitent désormais une communication complexe.
2. Personnalisez un comportement distribué en plusieurs classes sans vouloir générer trop de sous-classes.
On peut voir que les objets de médiation sont principalement utilisés pour encapsuler le comportement, et les participants au comportement sont ces objets, mais par le médiateur, ces objets n'ont pas besoin de se connaître. (Mise en œuvre spécifique de la loi de Dimit)
Avantages de l'utilisation du modèle intermédiaire:
1. Réduit le couplage entre les objets système, ce qui rend les objets faciles à réutiliser indépendamment.
2. Améliorer la flexibilité du système et rendre le système facile à développer et à maintenir.
Inconvénients de l'utilisation du modèle de médiateur:
Les inconvénients du modèle intermédiaire sont évidents, car cet "intermédiaire" assume plus de responsabilités, donc une fois qu'il y a un problème avec l'objet intermédiaire, l'ensemble du système sera grandement affecté.