suchen
HeimWeb-Frontendjs-TutorialTutorial zur Verwendung von Kombinationsmustern bei der Entwicklung von JavaScript-Entwurfsmustern (Fortgeschritten)

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");

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");

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");
}

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();
  }
}

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();

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!

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
es6数组怎么去掉重复并且重新排序es6数组怎么去掉重复并且重新排序May 05, 2022 pm 07:08 PM

去掉重复并排序的方法:1、使用“Array.from(new Set(arr))”或者“[…new Set(arr)]”语句,去掉数组中的重复元素,返回去重后的新数组;2、利用sort()对去重数组进行排序,语法“去重数组.sort()”。

JavaScript的Symbol类型、隐藏属性及全局注册表详解JavaScript的Symbol类型、隐藏属性及全局注册表详解Jun 02, 2022 am 11:50 AM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于Symbol类型、隐藏属性及全局注册表的相关问题,包括了Symbol类型的描述、Symbol不会隐式转字符串等问题,下面一起来看一下,希望对大家有帮助。

原来利用纯CSS也能实现文字轮播与图片轮播!原来利用纯CSS也能实现文字轮播与图片轮播!Jun 10, 2022 pm 01:00 PM

怎么制作文字轮播与图片轮播?大家第一想到的是不是利用js,其实利用纯CSS也能实现文字轮播与图片轮播,下面来看看实现方法,希望对大家有所帮助!

JavaScript对象的构造函数和new操作符(实例详解)JavaScript对象的构造函数和new操作符(实例详解)May 10, 2022 pm 06:16 PM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于对象的构造函数和new操作符,构造函数是所有对象的成员方法中,最早被调用的那个,下面一起来看一下吧,希望对大家有帮助。

JavaScript面向对象详细解析之属性描述符JavaScript面向对象详细解析之属性描述符May 27, 2022 pm 05:29 PM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于面向对象的相关问题,包括了属性描述符、数据描述符、存取描述符等等内容,下面一起来看一下,希望对大家有帮助。

javascript怎么移除元素点击事件javascript怎么移除元素点击事件Apr 11, 2022 pm 04:51 PM

方法:1、利用“点击元素对象.unbind("click");”方法,该方法可以移除被选元素的事件处理程序;2、利用“点击元素对象.off("click");”方法,该方法可以移除通过on()方法添加的事件处理程序。

foreach是es6里的吗foreach是es6里的吗May 05, 2022 pm 05:59 PM

foreach不是es6的方法。foreach是es3中一个遍历数组的方法,可以调用数组的每个元素,并将元素传给回调函数进行处理,语法“array.forEach(function(当前元素,索引,数组){...})”;该方法不处理空数组。

整理总结JavaScript常见的BOM操作整理总结JavaScript常见的BOM操作Jun 01, 2022 am 11:43 AM

本篇文章给大家带来了关于JavaScript的相关知识,其中主要介绍了关于BOM操作的相关问题,包括了window对象的常见事件、JavaScript执行机制等等相关内容,下面一起来看一下,希望对大家有帮助。

See all articles

Heiße KI -Werkzeuge

Undresser.AI Undress

Undresser.AI Undress

KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover

AI Clothes Remover

Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool

Undress AI Tool

Ausziehbilder kostenlos

Clothoff.io

Clothoff.io

KI-Kleiderentferner

AI Hentai Generator

AI Hentai Generator

Erstellen Sie kostenlos Ai Hentai.

Heiße Werkzeuge

MantisBT

MantisBT

Mantis ist ein einfach zu implementierendes webbasiertes Tool zur Fehlerverfolgung, das die Fehlerverfolgung von Produkten unterstützen soll. Es erfordert PHP, MySQL und einen Webserver. Schauen Sie sich unsere Demo- und Hosting-Services an.

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ist eine PHP/MySQL-Webanwendung, die sehr anfällig ist. Seine Hauptziele bestehen darin, Sicherheitsexperten dabei zu helfen, ihre Fähigkeiten und Tools in einem rechtlichen Umfeld zu testen, Webentwicklern dabei zu helfen, den Prozess der Sicherung von Webanwendungen besser zu verstehen, und Lehrern/Schülern dabei zu helfen, in einer Unterrichtsumgebung Webanwendungen zu lehren/lernen Sicherheit. Das Ziel von DVWA besteht darin, einige der häufigsten Web-Schwachstellen über eine einfache und unkomplizierte Benutzeroberfläche mit unterschiedlichen Schwierigkeitsgraden zu üben. Bitte beachten Sie, dass diese Software

EditPlus chinesische Crack-Version

EditPlus chinesische Crack-Version

Geringe Größe, Syntaxhervorhebung, unterstützt keine Code-Eingabeaufforderungsfunktion

Sicherer Prüfungsbrowser

Sicherer Prüfungsbrowser

Safe Exam Browser ist eine sichere Browserumgebung für die sichere Teilnahme an Online-Prüfungen. Diese Software verwandelt jeden Computer in einen sicheren Arbeitsplatz. Es kontrolliert den Zugriff auf alle Dienstprogramme und verhindert, dass Schüler nicht autorisierte Ressourcen nutzen.

Herunterladen der Mac-Version des Atom-Editors

Herunterladen der Mac-Version des Atom-Editors

Der beliebteste Open-Source-Editor