Die Funktion des Mediatormusters besteht darin, die enge Kopplungsbeziehung zwischen Objekten zu trennen, die auch als "Mediator" bezeichnet wird. Alle Objekte kommunizieren über das Zwischenobjekt, anstatt sich aufeinander zu beziehen. Wenn sich ein Objekt ändert, müssen Sie also nur den Vermittler benachrichtigen.
Zum Beispiel: Der Befehlsturm des Flughafens muss jedes Flugzeug nur mit dem Befehlsturm kommunizieren. Der Befehlsturm kennt den Flugstatus jedes Flugzeugs, kann alle Start- und Landezeiten anordnen, Routen usw. einstellen.
Das Vermittlermodell entspricht dem dimitianischen Gesetz, dh dem Prinzip des geringsten Wissens, was bedeutet, dass ein Objekt über ein anderes Objekt so wenig wie möglich wissen sollte. Wenn die Kopplung zwischen Objekten zu hoch ist, wirkt sich das Ändern eines Objekts viele Objekte aus und ist schwer zu warten. Wenn die Objektkupplung eng ist, ist es schwierig, ein Objekt zu ändern, ohne die anderen Objekte zu beeinflussen.
Wenn die komplexe Kopplung zwischen Objekten Schwierigkeiten beim Aufrufen und Aufrechterhalten hat und diese Kopplungsgrade exponentiell mit den Änderungen des Projekts wachsen, können wir in Betracht ziehen, den Code mit dem Intermediary -Muster neu zu verarbeiten! Mediatoren verbessern die Wartbarkeit von Code durch Entkopplung.
Beispiel 1: Spiel
Das Spielerobjekt wird über den Player () -Konstruktor erstellt und hat seine eigenen Punkte und Namensattribute. Die Play () -Methode im Prototyp ist dafür verantwortlich, sich selbst einen Punkt hinzuzufügen und den Vermittler zu benachrichtigen:
Function Player (Name) {this.points = 0; this.name = name;} Player.Prototype.play = function () {this.points += 1; Mediator.Played ();};Das Anzeigetafel (Anzeigetafel) verfügt über eine Update () -Methode, die vom Vermittler nach Abschluss jedes Spielers aufgerufen wird. Die Analyse kennt überhaupt keine Informationen über den Spieler, und es speichert auch keine Punktzahlen. Es ist nur dafür verantwortlich, die vom Vermittler angegebenen Ergebnisse anzuzeigen:
var scoreboard = {element: document.getElementById ('resulting'), update: function (bewertet) {var i, msg = ''; für (i in Score) {if (Score.hasownProperty (i)) {msg + = '<p> <strong>' + i + '<// strong>:'; MSG += Score [i]; msg += '<// p>'; }} this.element.innerhtml = msg; }};Schauen wir uns nun das Mediatorobjekt (Mediator) an. Wenn das Spiel initialisiert wird, erstellen Sie den Player in der Setup () -Methode und setzen Sie dann das Player -Attribut für die nachfolgende Verwendung ein. Die gespielte () -Methode wird vom Spieler nach jeder Runde aufgerufen. Es aktualisiert die Score -Hash -Tabelle und übergibt sie dann an die Anzeigetafel. Die letzte Methode ist TastePress (), die Tastaturereignisse übernimmt, entscheidet, welcher Spieler sie spielt, und benachrichtigt sie:
var mediator = {player: {}, setup: function () {var player = this.players; Spieler.Home = New Player ('Home'); Spieler.Guest = neuer Spieler ('Gast'); }, gespielt: function () {var player = this.players, Score = {home: player.home.points, gäste: player.guest.points}; Anzeigetafel.Update (Score); }, tastePress: function (e) {e = e || Fenster.Event; // ie if (e.which === 49) {// key "1" mediator.players.home.play (); zurückkehren; } if (e.Which === 48) {// key "0" mediator.players.guest.play (); zurückkehren; }}};Das Letzte ist, das Spiel zu initialisieren und zu beenden:
// go! mediator.setUp (); window.onkeypress = mediator.keypress; // Spiel in 30 Sekundenspannung (function () {window.onkeypress = null; alert ('game Over!');}, 30000);Beispiel 2: Verkauf eines Mobiltelefons
var goods = {// Inventory 'rot | 32g': 3, 'rot | 16g': 5, 'blau | 32g': 3, 'blau | 16g': 6} // intermediator var mediator = (function (function (function id ('numberInput'), colorinfo = id ('colorinfo'), memoryInfo = id ('memoryInfo'), numberInfo = id ('numberinfo'), NextBtn = id ('NextBTN'); Waren [Color+'|'+Memory]; Numberinfo.InnerHtml = Nummer; NextBtn.Disabled = true; Mediator.Changed (this);} numberInput.onchange = function () {Mediator.Changed (this);}Referenzen: "JavaScript -Muster" "JavaScript -Designmuster und Entwicklungspraxis"
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.