La fonction du modèle de médiateur est de déconnecter la relation de couplage serrée entre les objets, qui est également appelé «médiateur». Tous les objets communiquent via l'objet intermédiaire, plutôt que de vous référer les uns aux autres, donc lorsqu'un objet change, vous n'avez qu'à informer l'intermédiaire.
Par exemple: la tour de commandement de l'aéroport, chaque avion n'a besoin que de communiquer avec la tour de commandement. La tour de commandement connaît l'état du vol de chaque avion, peut organiser tous les temps de décollage et d'atterrissage, ajuster les itinéraires, etc.
Le modèle intermédiaire est conforme à la loi dimitienne, c'est-à-dire le principe de la moindre connaissance, ce qui signifie qu'un objet devrait savoir le moins possible sur un autre objet. Si le couplage entre les objets est trop élevé, le changement d'un objet affectera de nombreux objets et est difficile à maintenir. Lorsque le couplage de l'objet est serré, il est difficile de modifier un objet sans affecter les autres objets.
Si le couplage complexe entre les objets entraîne des difficultés à appeler et à maintenir, et que ces degrés de couplage augmentent de façon exponentielle avec les changements dans le projet, nous pouvons envisager de refactoriser le code avec le modèle intermédiaire! Les médiateurs améliorent la maintenabilité du code par découplage.
Exemple 1: jeu
L'objet Player est créé via le constructeur Player () et a ses propres points et attributs de noms. La méthode play () sur le prototype est responsable de l'ajout d'un point à lui-même et de la notification de l'intermédiaire:
Fonction Player (name) {this.points = 0; this.name = name;} player.prototype.play = function () {this.points + = 1; mediator.played ();};L'objet de tableau de bord (ScoreBoard) a une méthode Update (), qui est appelée par l'intermédiaire une fois que chaque joueur a terminé le jeu. L'analyse ne connaît aucune information sur le joueur, et elle n'enregistre pas les scores. Il est seulement responsable de l'affichage des scores donnés par l'intermédiaire:
var scoreboard = {élément: document.getElementById ('résultats'), mise à jour: fonction (score) {var i, msg = ''; for (i in score) {if (score.hasownproperty (i)) {msg + = '<p> <strong>' + i + '<// fort>:'; msg + = score [i]; msg + = '<// p>'; }} this.element.innerhtml = msg; }};Jetons maintenant un coup d'œil à l'objet médiateur (médiateur). Lorsque le jeu est initialisé, créez le lecteur dans la méthode Configuration (), puis mettez l'attribut de lecteur pour une utilisation ultérieure. La méthode jouée () sera appelée par le joueur après chaque tour. Il met à jour la table de hachage de score, puis la transmet au tableau de bord pour l'affichage. La dernière méthode est Keypress (), qui gère les événements du clavier, décide quel joueur le joue et le note:
var Mediator = {Players: {}, setup: function () {var joueurs = this.players; Players.Home = nouveau joueur ('home'); Players.Guest = nouveau joueur ('invité'); }, joué: function () {var joueurs = this.players, score = {home: player.home.points, invité: joueurs.guest.points}; Scoreboard.update (score); }, Keypress: fonction (e) {e = e || window.event; // ie if (e.which === 49) {// key "1" mediator.players.home.play (); retour; } if (e.which === 48) {// key "0" mediator.players.guest.play (); retour; }}};La dernière chose est d'initialiser et de terminer le jeu:
// go! mediator.setup (); window.onKeyPress = mediator.KeyPress; // jeu sur 30 de secondetTimeout (function () {window.onKeyPress = null; alert ('jeu over!');}, 30000);Exemple 2: vendre un téléphone mobile
var biens = {// Inventaire 'rouge | 32g': 3, 'rouge | 16g': 5, 'bleu | 32g': 3, 'bleu | 16g': 6} // intermediator var mediator = (function () {function id (id) {return document.getElementByid (id);} var couleurslect = id ('coollelect'), memoryselect = id () id ('NumberInput'), colorinfo = id ('colorinfo'), memoryInfo = id ('MemoryInfo'), NumberInfo = id ('NumberInfo'), nextBtn = id ('nextBtn'); Goods [Color + '|' + Mémoire]; NumberInfo.Innerhtml = Numéro;} if (! NextBtn.Disabled = True; Mediator.Changed (this);} NumberInput.OnChange = function () {Mediator.Changed (this);}Références: "modèle javascript" "modèle de conception JavaScript et pratique de développement"
Ce qui précède est tout le contenu de cet article. J'espère que cela sera utile à l'apprentissage de tous et j'espère que tout le monde soutiendra davantage Wulin.com.