Heim  >  Artikel  >  Web-Frontend  >  js-Designmuster: Was ist das Mediatormuster? Einführung in das js-Mediator-Muster

js-Designmuster: Was ist das Mediatormuster? Einführung in das js-Mediator-Muster

不言
不言Original
2018-08-17 16:48:381527Durchsuche

Dieser Artikel enthält Inhalte zu js-Designmustern: Was ist das Zwischenmuster? Die Einführung des js-Vermittlermodells hat einen gewissen Referenzwert. Freunde in Not können sich darauf beziehen.

Was ist das Vermittlermodell?

Mediatormuster: Objekte kommunizieren über einen externen Vermittler miteinander.

Definition: Verwenden Sie ein Zwischenobjekt, um eine Reihe von Objektinteraktionen zu kapseln, sodass Objekte nicht explizit aufeinander verweisen müssen Sie sind lose gekoppelt und ihre Interaktionen können unabhängig voneinander geändert werden.

Hauptlösung: Es gibt eine große Anzahl von Beziehungen zwischen Objekten, was die Struktur des Systems zwangsläufig sehr kompliziert macht. Wenn sich ein Objekt ändert, müssen wir es auch tun um zugehörige Objekte zu verfolgen und gleichzeitig entsprechende Verarbeitungen durchzuführen.

Verwendungszweck: Mehrere Klassen werden miteinander gekoppelt, um eine Netzwerkstruktur zu bilden.

So lösen Sie: Teilen Sie die obige Netzstruktur in eine Sternstruktur auf.

Anwendungsbeispiele für JS-Vermittlermodelle: 1. Bevor China der WTO beitrat, handelten verschiedene Länder miteinander, und die Struktur war komplex. Jetzt handeln verschiedene Länder über die WTO miteinander . 2. Flughafen-Abfertigungssystem. 3. MVC-Framework, in dem C (Controller) der Vermittler zwischen M (Modell) und V (Ansicht) ist.

Vorteile des js-Zwischenmodus: 1. Reduzieren Sie die Komplexität der Klasse und konvertieren Sie Eins-zu-Viele in Eins-zu-Eins. 2. Entkopplung zwischen verschiedenen Klassen. 3. Halten Sie sich an das Dimit-Prinzip.

Nachteile des js-Mediator-Modells: Der Mediator wird riesig und komplex und schwer zu warten sein.

Js-Zwischenmodus-Nutzungsszenarien: 1. Es gibt relativ komplexe Referenzbeziehungen zwischen Objekten im System, was zu einer verwirrenden Abhängigkeitsstruktur zwischen ihnen führt und die Wiederverwendung des Objekts erschwert. 2. Ich möchte eine Zwischenklasse verwenden, um die Verhaltensweisen in mehreren Klassen zu kapseln, ohne zu viele Unterklassen zu generieren.

Hinweis: sollte nicht verwendet werden, wenn die Verantwortlichkeiten verwirrend sind.

JS-Zwischenmodus-Szenario-Demo

Nachdem ein Test beendet ist, werden die Ergebnisse bekannt gegeben: Informieren Sie die Person, die die Frage beantwortet hat, dass die Herausforderung erfolgreich war, andernfalls ist die Herausforderung fehlgeschlagen.

const player = function(name) {
  this.name = name
  playerMiddle.add(name)
}

player.prototype.win = function() {
  playerMiddle.win(this.name)
}

player.prototype.lose = function() {
  playerMiddle.lose(this.name)
}

const playerMiddle = (function() { // 将就用下这个 demo,这个函数当成中介者
  const players = []
  const winArr = []
  const loseArr = []
  return {
    add: function(name) {
      players.push(name)
    },
    win: function(name) {
      winArr.push(name)
      if (winArr.length + loseArr.length === players.length) {
        this.show()
      }
    },
    lose: function(name) {
      loseArr.push(name)
      if (winArr.length + loseArr.length === players.length) {
        this.show()
      }
    },
    show: function() {
      for (let winner of winArr) {
        console.log(winner + '挑战成功;')
      }
      for (let loser of loseArr) {
        console.log(loser + '挑战失败;')
      }
    },
  }
}())

const a = new player('A 选手')
const b = new player('B 选手')
const c = new player('C 选手')

a.win()
b.win()
c.lose()

// A 选手挑战成功;
// B 选手挑战成功;
// C 选手挑战失败;

In diesem Code gibt es keine direkte Beziehung zwischen A, B und C. Stattdessen wird die Verbindung über ein anderes playerMiddle-Objekt hergestellt. Betrachten wir es als Mediatormodus.

Verwandte Empfehlungen:

js-Designmuster: Was ist das Chain-of-Responsibility-Muster? Einführung in das js-Chain-of-Responsibility-Muster

js-Designmuster: Was ist das Fliegengewichtsmuster? Einführung in den js-Fliegengewichtsmodus

Das obige ist der detaillierte Inhalt vonjs-Designmuster: Was ist das Mediatormuster? Einführung in das js-Mediator-Muster. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn