suchen
HeimWeb-Frontendjs-TutorialDie Verwendung von Kombinationsmustern in Entwurfsmustern bei der JavaScript-Programmerstellung (fortgeschritten)

Das Kombinationsmuster kombiniert im Allgemeinen eine Reihe ähnlicher kleiner Objekte zu einem großen Objekt. Schauen wir uns das Kombinationsmuster im Entwurfsmuster genauer an 🎜>

in der JavaScript-Programmkonstruktion definiert

Kombination, wie der Name schon sagt, um eine einzelne Entität aus Objekten zu erstellen, die mehrere Komponenten enthalten. Diese einzelne Entität dient als Zugangspunkt für alle diese Teile, und obwohl dies die Dinge erheblich vereinfacht, kann es auch ziemlich irreführend sein, da es keine implizite Möglichkeit gibt, klar zu machen, wie viele Teile die Kombination enthält.

Ziel des Kombinationsmusters ist es, das Client-Programm von der internen Architektur komplexer Elemente zu entkoppeln, sodass das Client-Programm alle Unterelemente gleich behandelt.

Jeder untergeordnete Knoten kann komplex sein. Für den übergeordneten Knoten ist es nicht erforderlich, die Komplexität des untergeordneten Knotens oder die Komplexität der Implementierung des untergeordneten Knotens zu kennen des untergeordneten Knotens und Sie können ihn verwenden. Vereinfachte Beziehung zwischen Vater und Sohn.

Das Gleiche gilt für untergeordnete Knoten. Eine übermäßige Schnittstellenexposition ist manchmal ein Missbrauch und verringert auch die externe Abhängigkeit.

BeispielKombinationen erklären wir am besten anhand von Beispielen. Im Bild unten sehen Sie zwei verschiedene Arten von Objekten: Container und Bibliotheken sind Kompositionen und Bilder sind Blätter. Eine Komposition kann untergeordnete Elemente beherbergen, implementiert jedoch im Allgemeinen kein weiteres Verhalten. Blätter enthalten die meisten Verhaltensweisen, können jedoch keine Kinder beherbergen, zumindest nicht im traditionellen Kompositionsbeispiel.

2016518103600142.png (550×341)

In diesem Beispiel wird eine Bildergalerie als Beispiel für einen kombinierten Modus erstellt. Es gibt nur drei Ebenen: Alben, Bibliotheken und Bilder. Alben und Bibliotheken sind Gruppen und die Bilder sind die Blätter, wie im Bild oben gezeigt. Dies ist eine explizitere Struktur, als die Komposition selbst erfordert, aber für dieses Beispiel ist es sinnvoll, diese Ebenen nur auf Kompositionen oder Klingen zu beschränken. Die Standardzusammensetzung schränkt nicht ein, welche Strukturebenen Flügel haben können, und auch nicht die Anzahl der Flügel.

Um zu beginnen, sollten Sie zunächst die GalleryComposite-„Klasse“ für Alben und Bibliotheken erstellen. Beachten Sie, dass ich jQuery verwende, um die DOM-Manipulation durchzuführen, um den Prozess zu vereinfachen.

var GalleryComposite = function (heading, id) {
  this.children = [];

  this.element = $(&#39;<p id="&#39; + id + &#39;" class="composite-gallery"></p>&#39;)
  .append(&#39;<h2 id="nbsp-nbsp-heading-nbsp-nbsp">&#39; + heading + &#39;</h2>&#39;);
}

GalleryComposite.prototype = {
  add: function (child) {
    this.children.push(child);
    this.element.append(child.getElement());
  },

  remove: function (child) {
    for (var node, i = 0; node = this.getChild(i); i++) {
      if (node == child) {
        this.children.splice(i, 1);
        this.element.detach(child.getElement());
        return true;
      }

      if (node.remove(child)) {
        return true;
      }
    }

    return false;
  },

  getChild: function (i) {
    return this.children[i];
  },

  hide: function () {
    for (var node, i = 0; node = this.getChild(i); i++) {
      node.hide();
    }

    this.element.hide(0);
  },

  show: function () {
    for (var node, i = 0; node = this.getChild(i); i++) {
      node.show();
    }

    this.element.show(0);
  },

  getElement: function () {
    return this.element;
  }
}

Diese Position ist etwas knifflig, könnten Sie mir bitte erlauben, sie etwas genauer zu erklären? Wir erstellen diese Kombination mit den getChild-Methoden „add“, „remove“ und „getChild“. In diesem Beispiel werden „remove“ und „getChild“ nicht wirklich verwendet, sie sind jedoch nützlich, um dynamische Kombinationen zu erstellen. Die Methoden hide, show und getElement werden zum Bearbeiten des DOM verwendet. Die Komposition soll dem Benutzer auf der Seite als Darstellung der Bibliothek angezeigt werden. Diese Kombination steuert diese Bibliothekselemente durch Ausblenden und Anzeigen. Wenn Sie „hide“ für ein Album aufrufen, wird das gesamte Album ausgeblendet, oder Sie können es einfach für ein einzelnes Bild aufrufen, sodass nur dieses Bild ausgeblendet wird.

Erstellen Sie nun eine GalleryImage-Klasse. Beachten Sie, dass es genau den gleichen Ansatz wie GalleryComposite verwendet. Mit anderen Worten, sie implementieren dieselbe Schnittstelle, mit der Ausnahme, dass das Bild ein Blatt ist und daher eigentlich keine Auswirkungen auf die untergeordneten Methoden hat, so wie es keine untergeordneten Methoden hat. Die Komposition muss über dieselbe Schnittstelle ausgeführt werden, da das Kompositionselement nicht weiß, ob es ein weiteres Kompositionselement oder ein Blatt hinzufügt. Wenn Sie also versuchen, diese Methoden für seine untergeordneten Elemente aufzurufen, muss es einwandfrei und ohne Fehler laufen.

var GalleryImage = function (src, id) {
  this.children = [];

  this.element = $(&#39;<img  / alt="Die Verwendung von Kombinationsmustern in Entwurfsmustern bei der JavaScript-Programmerstellung (fortgeschritten)" >&#39;)
  .attr(&#39;id&#39;, id)
  .attr(&#39;src&#39;, src);
}

GalleryImage.prototype = {
  // Due to this being a leaf, it doesn&#39;t use these methods,
  // but must implement them to count as implementing the
  // Composite interface
  add: function () { },

  remove: function () { },

  getChild: function () { },

  hide: function () {
    this.element.hide(0);
  },

  show: function () {
    this.element.show(0);
  },

  getElement: function () {
    return this.element;
  }
}

Nachdem Sie den Objektprototyp erstellt haben, können Sie ihn nun verwenden. Unten sehen Sie den Code, der die Bildbibliothek tatsächlich erstellt.

var container = new GalleryComposite(&#39;&#39;, &#39;allgalleries&#39;);
var gallery1 = new GalleryComposite(&#39;Gallery 1&#39;, &#39;gallery1&#39;);
var gallery2 = new GalleryComposite(&#39;Gallery 2&#39;, &#39;gallery2&#39;);
var image1 = new GalleryImage(&#39;image1.jpg&#39;, &#39;img1&#39;);
var image2 = new GalleryImage(&#39;image2.jpg&#39;, &#39;img2&#39;);
var image3 = new GalleryImage(&#39;image3.jpg&#39;, &#39;img3&#39;);
var image4 = new GalleryImage(&#39;image4.jpg&#39;, &#39;img4&#39;);

gallery1.add(image1);
gallery1.add(image2);

gallery2.add(image3);
gallery2.add(image4);

container.add(gallery1);
container.add(gallery2);

// Make sure to add the top container to the body,
// otherwise it&#39;ll never show up.
container.getElement().appendTo(&#39;body&#39;);
container.show();

Vorteile des Kombinationsmodus: Einfache Operationen können auch komplexe Ergebnisse liefern. Sie müssen nur Operationen für das Objekt der obersten Ebene ausführen und jedes Unterobjekt die Operation alleine durchlaufen lassen . Dies ist besonders nützlich bei Vorgängen, die immer wieder ausgeführt werden.

Im Kompositionsmodus ist die Kopplung zwischen einzelnen Objekten sehr locker. Solange sie die gleiche Schnittstelle implementieren, ist es ein Kinderspiel, ihren Standort zu ändern oder sie auszutauschen. Dies fördert die Wiederverwendung von Code und erleichtert auch das Code-Refactoring.

Jedes Mal, wenn eine Operation an einem zusammengesetzten Objekt der obersten Ebene ausgeführt wird, wird tatsächlich eine Tiefensuche der gesamten Struktur durchgeführt, um Knoten zu finden, und der Programmierer, der das zusammengesetzte Objekt erstellt hat, hat keine Ahnung davon diese Details. Es ist sehr einfach, Knoten in dieser Hierarchie hinzuzufügen, zu löschen und zu finden.

Nachteile des Kompositionsmusters: Die Benutzerfreundlichkeit eines Kompositionsobjekts kann die Kosten für jeden von ihm unterstützten Vorgang verschleiern. Da jede von einem zusammengesetzten Objekt aufgerufene Operation an alle seine untergeordneten Objekte weitergeleitet wird, wird die Leistung des Systems beeinträchtigt, wenn die Hierarchie groß ist. Für den ordnungsgemäßen Betrieb des Composite-Musters ist eine Art Schnittstelle erforderlich.

Wenn zusammengesetzte Objekte und Knotenklassen als Verpackungstools für HTML-Elemente verwendet werden, muss das zusammengesetzte Objekt den Verwendungsregeln von HTML entsprechen. Beispielsweise ist es schwierig, eine Tabelle in ein zusammengesetztes Objekt umzuwandeln.

Je strenger die Schnittstellenprüfung, desto zuverlässiger ist die zusammengesetzte Objektklasse.

Das Obige habe ich für Sie zusammengestellt und hoffe, dass es Ihnen in Zukunft hilfreich sein wird.

Verwandte Artikel:

Tutorial zur Verwendung von Kombinationsmustern in der Entwicklung von JavaScript-Entwurfsmustern (fortgeschritten)

Die Anwendung des Fassadendarstellungsmusters in Entwurfsmustern in der JavaScript-Entwicklung (fortgeschritten)

Detaillierte Erläuterung der Implementierung des Adaptermusters in Entwurfsmustern in JavaScript (Grafik Tutorial)

Das obige ist der detaillierte Inhalt vonDie Verwendung von Kombinationsmustern in Entwurfsmustern bei der JavaScript-Programmerstellung (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
JavaScripts Kern: Ist es auf C oder C aufgebaut?JavaScripts Kern: Ist es auf C oder C aufgebaut?May 05, 2025 am 12:07 AM

JavaScriptisnotbuiltoncorc; Es ist angehört, dass sich JavaScriptWasdedeSthatrunsonGineoFtencninc.

JavaScript-Anwendungen: Von Front-End bis Back-EndJavaScript-Anwendungen: Von Front-End bis Back-EndMay 04, 2025 am 12:12 AM

JavaScript kann für die Entwicklung von Front-End- und Back-End-Entwicklung verwendet werden. Das Front-End verbessert die Benutzererfahrung durch DOM-Operationen, und die Back-End-Serveraufgaben über node.js. 1. Beispiel für Front-End: Ändern Sie den Inhalt des Webseitentextes. 2. Backend Beispiel: Erstellen Sie einen Node.js -Server.

Python vs. JavaScript: Welche Sprache sollten Sie lernen?Python vs. JavaScript: Welche Sprache sollten Sie lernen?May 03, 2025 am 12:10 AM

Die Auswahl von Python oder JavaScript sollte auf Karriereentwicklung, Lernkurve und Ökosystem beruhen: 1) Karriereentwicklung: Python ist für die Entwicklung von Datenwissenschaften und Back-End-Entwicklung geeignet, während JavaScript für die Entwicklung von Front-End- und Full-Stack-Entwicklung geeignet ist. 2) Lernkurve: Die Python -Syntax ist prägnant und für Anfänger geeignet; Die JavaScript -Syntax ist flexibel. 3) Ökosystem: Python hat reichhaltige wissenschaftliche Computerbibliotheken und JavaScript hat ein leistungsstarkes Front-End-Framework.

JavaScript -Frameworks: Stromversorgung moderner WebentwicklungJavaScript -Frameworks: Stromversorgung moderner WebentwicklungMay 02, 2025 am 12:04 AM

Die Kraft des JavaScript -Frameworks liegt in der Vereinfachung der Entwicklung, der Verbesserung der Benutzererfahrung und der Anwendungsleistung. Betrachten Sie bei der Auswahl eines Frameworks: 1. Projektgröße und Komplexität, 2. Teamerfahrung, 3. Ökosystem und Community -Unterstützung.

Die Beziehung zwischen JavaScript, C und BrowsernDie Beziehung zwischen JavaScript, C und BrowsernMay 01, 2025 am 12:06 AM

Einführung Ich weiß, dass Sie es vielleicht seltsam finden. Was genau muss JavaScript, C und Browser tun? Sie scheinen nicht miteinander verbunden zu sein, aber tatsächlich spielen sie eine sehr wichtige Rolle in der modernen Webentwicklung. Heute werden wir die enge Verbindung zwischen diesen drei diskutieren. In diesem Artikel erfahren Sie, wie JavaScript im Browser ausgeführt wird, die Rolle von C in der Browser -Engine und wie sie zusammenarbeiten, um das Rendern und die Interaktion von Webseiten voranzutreiben. Wir alle kennen die Beziehung zwischen JavaScript und Browser. JavaScript ist die Kernsprache der Front-End-Entwicklung. Es läuft direkt im Browser und macht Webseiten lebhaft und interessant. Haben Sie sich jemals gefragt, warum Javascr

Node.js Streams mit TypeScriptNode.js Streams mit TypeScriptApr 30, 2025 am 08:22 AM

Node.js zeichnet sich bei effizienten E/A aus, vor allem bei Streams. Streams verarbeiten Daten inkrementell und vermeiden Speicherüberladung-ideal für große Dateien, Netzwerkaufgaben und Echtzeitanwendungen. Die Kombination von Streams mit der TypeScript -Sicherheit erzeugt eine POWE

Python vs. JavaScript: Leistung und EffizienzüberlegungenPython vs. JavaScript: Leistung und EffizienzüberlegungenApr 30, 2025 am 12:08 AM

Die Unterschiede in der Leistung und der Effizienz zwischen Python und JavaScript spiegeln sich hauptsächlich in: 1 wider: 1) Als interpretierter Sprache läuft Python langsam, weist jedoch eine hohe Entwicklungseffizienz auf und ist für eine schnelle Prototypentwicklung geeignet. 2) JavaScript ist auf einen einzelnen Thread im Browser beschränkt, aber Multi-Threading- und Asynchronen-E/A können verwendet werden, um die Leistung in Node.js zu verbessern, und beide haben Vorteile in tatsächlichen Projekten.

Die Ursprünge von JavaScript: Erforschung seiner ImplementierungsspracheDie Ursprünge von JavaScript: Erforschung seiner ImplementierungsspracheApr 29, 2025 am 12:51 AM

JavaScript stammt aus dem Jahr 1995 und wurde von Brandon Ike erstellt und realisierte die Sprache in C. 1.C-Sprache bietet Programmierfunktionen auf hoher Leistung und Systemebene für JavaScript. 2. Die Speicherverwaltung und die Leistungsoptimierung von JavaScript basieren auf C -Sprache. 3. Die plattformübergreifende Funktion der C-Sprache hilft JavaScript, auf verschiedenen Betriebssystemen effizient zu laufen.

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

Video Face Swap

Video Face Swap

Tauschen Sie Gesichter in jedem Video mühelos mit unserem völlig kostenlosen KI-Gesichtstausch-Tool aus!

Heiße Werkzeuge

MinGW – Minimalistisches GNU für Windows

MinGW – Minimalistisches GNU für Windows

Dieses Projekt wird derzeit auf osdn.net/projects/mingw migriert. Sie können uns dort weiterhin folgen. MinGW: Eine native Windows-Portierung der GNU Compiler Collection (GCC), frei verteilbare Importbibliotheken und Header-Dateien zum Erstellen nativer Windows-Anwendungen, einschließlich Erweiterungen der MSVC-Laufzeit zur Unterstützung der C99-Funktionalität. Die gesamte MinGW-Software kann auf 64-Bit-Windows-Plattformen ausgeführt werden.

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

Dreamweaver Mac

Dreamweaver Mac

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

SublimeText3 Englische Version

SublimeText3 Englische Version

Empfohlen: Win-Version, unterstützt Code-Eingabeaufforderungen!