Das Brückenmuster trennt den abstrakten Teil vom Implementierungsteil, so dass beide unabhängig geändert werden können und harmonisch zusammenarbeiten können. Sowohl der abstrakte Teil als auch der Implementierungsteil können unabhängig geändert werden, ohne sich gegenseitig zu beeinflussen, wodurch die Kopplung des Codes verringert und die Skalierbarkeit des Codes verbessert wird.
Nach der Definition von GOF besteht die Rolle des Brückenmodus darin, "die Abstraktion von ihrer Implementierung so zu isolieren, damit sich die beiden unabhängig ändern können". Dieses Muster ist für ereignisgesteuerte Programme, die in JavaScript üblich sind, von großem Nutzen.
Eine der häufigsten und praktischsten Anwendungen des Bridge -Modus ist die Event -Listener -Rückruffunktion. Beispiel: Ereignishörer, verkauft mit Ereignisanweisungen in Callback-Funktionen und programmieren Sie sie über Schnittstellen und nicht über Implementierungen.
Grundtheorie
Brückenmuster -Definition: Separate abstrakte Teile von ihren Implementierungsteilen, damit sie alle unabhängig geändert werden können.
Der Brückenmodus besteht hauptsächlich aus 4 Rollen:
(1) abstrakte Klasse
(2) Abstrakte Klassen erweitern
(3) Klassenschnittstelle implementieren
(4) Spezifische Implementierungsklasse
Nach den Eigenschaften der JavaScript -Sprache vereinfachen wir sie in zwei Rollen:
(1) Abstrakte Klassen erweitern
(2) Spezifische Implementierungsklasse
Wie verstehe ich den Brückenmodus? Lassen Sie uns als nächstes ein Beispiel geben
Implementierung des Brückenmodus
Der Schlüssel zum Verständnis der Idee eines Brückenmusters ist es, seine Idee zu verstehen, abstrakte Teile zu trennen und Teile zu realisieren. Lassen Sie uns Beispiele geben, um zu veranschaulichen
Der einfachste Brückenmodus
Tatsächlich ist die jQuery, die wir am häufigsten verwenden, ein typischer Brückenmodus. Wir simulieren es wie folgt:
var jede = function (arr, fn) {for (var i = 0; i <arr.length; i ++) {var val = arr [i]; if (fn.call (val, i, val, arr)) {return false; }}} var arr = [1, 2, 3, 4]; jeweils (arr, Funktion (i, v) {arr [i] = v * 2;})In diesem Beispiel schleifen wir das ARR -Array durch jede Funktion durch. Obwohl dieses Beispiel sehr häufig ist, enthält es ein typisches Brückenmuster.
In diesem Beispiel ist der abstrakte Teil jede Funktion, die die oben erwähnte erweiterte abstrakte Klasse ist, und der Implementierungsteil ist FN, dh die konkrete Implementierungsklasse. Der abstrakte Teil und der Implementierungsteil können unabhängig geändert werden. Obwohl dieses Beispiel einfach ist, handelt es sich um eine typische Anwendung des Brückenmodus.
Brückenmodus in Plug-in-Entwicklung
Ein geeignetes Szenario für den Brückenmodus ist die Komponentenentwicklung. Um sich an verschiedene Anlässe anzupassen, haben die Komponenten viele Änderungen in verschiedenen Dimensionen. Der Brückenmodus kann hier angewendet werden, wodurch seine Abstraktion von der Implementierung getrennt wird, wodurch die Komponente erweiterbarer wird.
Angenommen, wir möchten ein Pop-up-Plug-In entwickeln, das unterschiedliche Arten von Pop-ups enthält: Gewöhnliche Nachrichtenerinnerungen, Fehlererinnerungen und die Anzeigemethode jeder Erinnerung ist unterschiedlich. Dies ist ein typisches mehrdimensionales Veränderungsszenario. Zuerst definieren wir zwei Klassen: Normale Message Popup-Fenster und Fehlermeldung Popup-Fenster.
Funktion Messagedialog (Animation) {this.Animation = Animation;} Messagedialog.Prototype.show = function () {this.Animation.show ();} Funktion errordialog (Animation) {this.Animation = Animation;} errordialog.prototypeDiese beiden Klassen sind die oben genannten abstrakten Teile, dh die erweiterten abstrakten Klassen, die beide eine Mitgliedsanimation enthalten.
Die beiden Popup-Fenster werden über die Show-Methode angezeigt, die Animationseffekte sind jedoch unterschiedlich. Wir definieren zwei Display -Effektklassen wie folgt:
Function Lineranimation () {} lineranimation.prototype.show = function () {console.log ("Es ist Liner");} function easeanimation () {} easeanimation.prototype.show = function () {console.log ("Es ist Easy");};};};};};};};};};};};};Diese beiden Klassen sind spezifische Implementierungsklassen, die spezifische Anzeigeeffekte erzielen. Wie nennen wir es?
var message = new Messagedialog (new Lineranimation ()); message.show (); var error = neuer errordialog (new easeanimation ()); error.show ();
Wenn wir einen Animationseffekt hinzufügen möchten, können wir eine andere Effektklasse definieren und ihn übergeben.
Zusammenfassen
Der Schlüssel zum Erlernen des Brückenmodells besteht darin, die Trennung zwischen dem abstrakten Teil und dem Implementierungsteil zu verstehen, damit die beiden unabhängig geändert werden können, ohne von Form besessen zu sein. Das JS-Plug-In hat flexible Änderungen und die Vielfalt der anwendbaren Szenarien eignet sich sehr für die Verwendung dieses Modells. Das Wichtigste an der Verwendung eines Brückenmodus ist, die verschiedenen Dimensionen der Änderung des Systems herauszufinden.
(1) Vorteile des Brückenmodus:
Das Isolieren der Abstraktion aus der Implementierung hilft, verschiedene Komponenten der Software unabhängig zu verwalten.
(2) Nachteile des Brückenmodus:
Jedes Brückenelement wird verwendet, um einen Funktionsaufruf hinzuzufügen, der einige negative Auswirkungen auf die Leistung der Anwendung hat. Erhöht die Komplexität des Systems. Wenn eine Brückenfunktion verwendet wird, um zwei Funktionen zu verbinden und eine der Funktionen überhaupt nicht außerhalb der Brückenfunktion aufgerufen wird, ist die Brückenfunktion zu diesem Zeitpunkt nicht erforderlich.
Der Brückenmodus "isoliert die Abstraktion von der Implementierung so, dass sich die beiden unabhängig verändern". Es kann die Modularität des Code fördern, zu einer saubereren Implementierung führen und die abstrakte Flexibilität verbessern. Es kann verwendet werden, um eine Reihe von Klassen und Funktionen zu verbinden, und bietet die Möglichkeit, mit privilegierten Funktionen auf private Daten zuzugreifen.