Heim > Web-Frontend > js-Tutorial > Hauptteil

Tutorial zur Verwendung von Kombinationsmustern bei der Entwicklung von JavaScript-Entwurfsmustern (Fortgeschritten)

亚连
Freigeben: 2018-05-21 14:06:36
Original
1594 Leute haben es durchsucht

Der Kombinationsmodus kann als Baumstruktur verstanden werden, sodass sich der Kombinationsmodus für den Betrieb einer großen Anzahl von Objekten eignet, insbesondere für solche mit klaren Hierarchien. Schauen wir uns das Tutorial zur Verwendung des Kombinationsmodus bei der Entwicklung an das sogenannte objektorientierte JavaScript-Entwurfsmuster

In unserem täglichen Entwicklungsprozess werden wir definitiv auf diese Situation stoßen: Einfache Objekte und komplexe Objekte, die aus einfachen Objekten bestehen, werden gleichzeitig verarbeitet werden zu einer Baumstruktur zusammengefasst und auf dem Client verarbeitet. Seien Sie konsistent bei der Handhabung. Bei Produktbestellungen auf E-Commerce-Websites kann beispielsweise jede Produktbestellung mehrere Unterauftragskombinationen haben, z. B. Betriebssystemordner. Jeder Ordner hat mehrere Unterordner oder Dateien, die wir kopieren, löschen usw. können Bei der Bedienung ist es für uns Bediener gleich, ob es sich um einen Ordner oder eine Datei handelt. In diesem Szenario ist die Verwendung des Kombinationsmodus sehr gut geeignet.

Grundkenntnisse

Kompositionsmodus: Kombinieren Sie Objekte in einer Baumstruktur, um die „Teil-Ganze“-Hierarchie darzustellen. Der Kombinationsmodus ermöglicht es Benutzern, einzelne Objekte und Kombinationen zu kombinieren Objekte werden konsequent verwendet.
Das Kombinationsmuster hat hauptsächlich drei Rollen:
(1) Abstrakte Komponente (Komponente): abstrakte Klasse, die hauptsächlich die öffentliche Schnittstelle der an der Kombination beteiligten Objekte definiert
(2) Unterobjekt (Blatt). ): bildet das kombinierte Objekt. Das grundlegendste Objekt
(3) Zusammengesetztes Objekt (Composite): ein komplexes Objekt, das aus Unterobjekten besteht
Der Schlüssel zum Verständnis des Kombinationsmodus besteht darin, die Konsistenz der Verwendung des Kombinationsmodus zu verstehen Als nächstes werden wir über die Implementierung des Kombinationsmodells sprechen, um unser Verständnis zu vertiefen.
Der Kombinationsmodus ist maßgeschneidert für die dynamische Erstellung einer Benutzeroberfläche auf der Seite. Sie können nur einen life=-Befehl verwenden, um einige komplexe oder rekursive Operationen für viele Objekte zu initialisieren:
(1) ermöglicht es Ihnen, eine Gruppe von Objekten als ein bestimmtes Objekt zu behandeln (ein zusammengesetztes Objekt), das die gleiche Operation wie die Unterobjekte ausführt, aus denen es besteht um den gleichen Vorgang auszuführen. Sie können also nicht nur ein einzelnes Objekt nahtlos durch eine Reihe von Objekten ersetzen, sondern auch umgekehrt. Diese unabhängigen Objekte werden so genannt Das Unterobjekt wird in eine Baumstruktur eingefügt und ermöglicht das Durchlaufen des gesamten Baums. Dadurch wird die interne Implementierung ausgeblendet und Sie können die Unterobjekte auf beliebige Weise organisieren. Der Code in diesem Objekt (zusammengesetztes Objekt) hängt nicht von der Implementierung ab interne Unterobjekte.

Implementierung des Kombinationsmodus

(1) Der einfachste Kombinationsmodus

Die DOM-Struktur von Das HTML-Dokument ist eine natürliche Baumstruktur, die grundlegendsten Elemente wird in einen DOM-Baum und schließlich in ein DOM-Dokument umgewandelt, das sich sehr gut für den Kombinationsmodus eignet.

Wir verwenden häufig die jQuery-Klassenbibliothek, in der der Kombinationsmodus noch häufiger verwendet wird. Beispielsweise wird häufig der folgende Code implementiert:

$(".test").addClass("noTest").remove("test");
Nach dem Login kopieren

Dieser einfache Code dient dazu, das Element abzurufen, dessen Klasse enthält test und dann die Verarbeitung von addClass und removeClass, unabhängig davon, ob $(".test") ein Element oder mehrere Elemente ist, wird letztendlich über die einheitlichen Schnittstellen addClass und removeClass aufgerufen.

Simulieren wir einfach die Implementierung von addClass:

var addClass = function (eles, className) {
  if (eles instanceof NodeList) {
    for (var i = 0, length = eles.length; i < length; i++) {
      eles[i].nodeType === 1 && (eles[i].className += (&#39; &#39; + className + &#39; &#39;));
    }
  }
  else if (eles instanceof Node) {
    eles.nodeType === 1 && (eles.className += (&#39; &#39; + className + &#39; &#39;));
  }
  else {
    throw "eles is not a html node";
  }
}
addClass(document.getElementById("p3"), "test");
addClass(document.querySelectorAll(".p"), "test");
Nach dem Login kopieren

Dieser Code simuliert einfach die Implementierung von addClass (vorerst ohne Berücksichtigung von Kompatibilität und Vielseitigkeit). Er bestimmt einfach zuerst den Knotentyp und basiert dann darauf Ein anderer Typ fügt den Klassennamen hinzu. Für NodeList oder Node verwenden alle Client-Aufrufe die addClass-Schnittstelle. Dies ist die grundlegendste Idee des Kombinationsmodus, die die Verwendung von Teilen und das Ganze konsistent macht.

(2) Typisches Beispiel

Zuvor haben wir ein typisches Beispiel erwähnt: Eine Produktbestellung enthält mehrere Produktunteraufträge, mehrere Produktunteraufträge. Bestellungen bilden eine komplexe Produktbestellung. Aufgrund der Eigenschaften der Javascript-Sprache vereinfachen wir die drei Rollen des Kombinationsmusters in zwei Rollen:

(1) Unterobjekt: In diesem Beispiel ist das Unterobjekt die Produktunterbestellung
( 2) Kombinationsobjekt: Hier handelt es sich um die Gesamtbestellung des Produkts
Angenommen, wir entwickeln eine Reiseprodukt-Website, die zwei Unterprodukte enthält: Flugtickets und Hotels. Wir definieren die Unterobjekte wie folgt:

function FlightOrder() { }
FlightOrder.prototyp.create = function () {
  console.log("flight order created");
}
function HotelOrder() { }
HotelOrder.prototype.create = function () {
  console.log("hotel order created");
}
Nach dem Login kopieren

Der obige Code definiert zwei Klassen: die Klasse für Flugticketbestellungen und die Klasse für Hotelbestellungen. Jede Klasse verfügt über ihre eigene Methode zur Auftragserstellung.

Als nächstes erstellen wir eine Gesamtauftragsklasse:

function TotalOrders() {
  this.orderList = [];
}
TotalOrders.prototype.addOrder = function (order) {
  this.orderList.push(order);
}
TotalOrders.prototype.create = function (order) {
  for (var i = 0, length = this.orderList.length; i < length; i++) {
    this.orderList[i].create();
  }
}
Nach dem Login kopieren

Dieses Objekt hat hauptsächlich 3 Mitglieder: Auftragsliste, Methode zum Hinzufügen von Aufträgen und Methode zum Erstellen von Aufträgen.

Bei Verwendung auf der Clientseite lautet es wie folgt:

var flight = new FlightOrder();
flight.create();

var orders = new TotalOrders();
orders.addOrder(new FlightOrder());
orders.addOrder(new HotelOrder());
orders.create();
Nach dem Login kopieren

Der Clientaufruf zeigt zwei Methoden: Eine besteht darin, eine einzelne Ticketbestellung zu erstellen, und die andere darin, mehrere Bestellungen zu erstellen, jedoch in der Am Ende werden beide durch die Methode create erstellt. Dies ist ein sehr typisches Anwendungsszenario des Kombinationsmodus.

Zusammenfassung Der Kombinationsmodus ist nicht schwer zu verstehen. Er löst hauptsächlich das Problem der Konsistenz bei der Verwendung einzelner Objekte und kombinierter Objekte. Dies ist ein guter Kandidat für die Verwendung des Composite-Musters, wenn Ihre Objekte eine klare hierarchische Struktur haben und Sie einheitlich mit ihnen arbeiten möchten. In der Webentwicklung ist diese Art der hierarchischen Struktur sehr verbreitet und eignet sich sehr gut für die Verwendung des Kombinationsmodus, insbesondere für JS. Es besteht keine Notwendigkeit, sich an die Form traditioneller objektorientierter Sprachen und die Eigenschaften von JS zu halten Sprache kann flexibel eingesetzt werden, um Teil- und Gesamtkonsistenz zu erreichen.
(1) Szenarien für die Verwendung des Kombinationsmodus Verwenden Sie den Kombinationsmodus nur, wenn die folgenden zwei Situationen auftreten
A. Eine Sammlung von Objekten mit einer bestimmten hierarchischen Struktur (die spezifische Struktur befindet sich im Entwicklungsprozess). Kann nicht bestimmt werden)
B. Ich hoffe, eine Operation an diesen Objekten oder einigen davon durchzuführen
(2) Nachteile des KombinationsmodusDa sich jede Operation am kombinierten Objekt auf alle Unterobjekte auswirkt Objekte Ruft denselben Vorgang auf, sodass es zu Leistungsproblemen kommt, wenn die kombinierte Struktur groß ist. Eine andere Sache ist die Auswahl geeigneter Tags, wenn der kombinierte Modus zum Kapseln von HTML verwendet wird. Die Tabelle kann beispielsweise nicht im kombinierten Modus verwendet werden und die Blattknoten sind nicht offensichtlich.

Das Obige ist, was ich hoffentlich für alle zusammengestellt habe Es wird in Zukunft für alle hilfreich sein.

Verwandte Artikel:

Die Anwendung des Fassadenerscheinungsmusters in Designmustern in der JavaScript-Entwicklung (fortgeschritten)

Detaillierte Interpretation unter Methoden zur Implementierung des Adaptermusters in Entwurfsmustern in JavaScript (grafisches Tutorial)

Zusammenfassung der Anwendung des Adapter-Adaptermusters in der JavaScript-Entwurfsmusterprogrammierung (grafisches Tutorial)

Das obige ist der detaillierte Inhalt vonTutorial zur Verwendung von Kombinationsmustern bei der Entwicklung von JavaScript-Entwurfsmustern (Fortgeschritten). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!