Heim Web-Frontend js-Tutorial JavaScript-Designmuster, Fabrikmuster und Konstruktormuster_Javascript-Kenntnisse

JavaScript-Designmuster, Fabrikmuster und Konstruktormuster_Javascript-Kenntnisse

May 16, 2016 pm 04:14 PM
javascript 工厂模式 设计模式

Was ist ein Muster?

Ich habe mich vor einiger Zeit auf die Abschlussprüfung vorbereitet und hatte wirklich keine Zeit, den Artikel zu aktualisieren. Heute werde ich mit Ihnen über die Entwurfsmuster in JavaScript sprechen.

Zuallererst müssen wir wissen: Ein Muster ist eine wiederverwendbare Lösung, während ein Anti-Muster eine schlechte Lösung für ein bestimmtes Problem ist.

Häufige Beispiele für js-Anti-Muster

1. Übergeben Sie Zeichenfolgen an setTimeout und setInterval anstelle von Funktionen, was die interne Verwendung von eval() auslöst.
2. Definieren Sie eine große Anzahl von Variablen im globalen Kontext, um den globalen Namespace
zu verschmutzen 3. Ändern Sie den Prototyp der Object-Klasse
4. Verwenden Sie js in Inline-Form. Der in die HTML-Datei eingebettete js-Code kann nicht in externe Unit-Test-Tools eingebunden werden.
5. Missbrauch von document.write. Wenn document.write nach dem Laden der Seite ausgeführt wird, wird die Seite, auf der wir uns befinden, neu geschrieben. Wenn Sie stattdessen document.create verwenden können, versuchen Sie, document.write nicht zu verwenden.

Kategorien von Designmustern

Kreatives Designmuster

Kreative Designmuster konzentrieren sich auf den Umgang mit Objekterstellungsmechanismen, um Objekte auf eine Weise zu erstellen, die für eine bestimmte Situation geeignet ist. Zu den Eigenschaften, die in diese Kategorie fallen, gehören:

Konstrukteur, Fabrik, Zusammenfassung, Prototyp, Singleton und Builder

Strukturelles Entwurfsmuster

Bei Strukturmustern geht es um die Objektzusammensetzung und sie können häufig verwendet werden, um einfache Wege zum Herstellen von Beziehungen zwischen verschiedenen Objekten zu finden.
Zu den Mustern, die in diese Kategorie fallen, gehören:

Dekorateur, Fassadengestaltung, Fliegengewicht, Adapteradapter und Proxy-Agent

Verhaltensdesignmuster

Verhaltensmuster konzentrieren sich auf die Verbesserung oder Vereinfachung der Kommunikation zwischen verschiedenen Objekten im System.

Zu den Verhaltensmustern gehören:

Iterator, Mediator, Beobachter und Besucher

Werksmodus

Um das Problem mehrerer ähnlicher Objektdeklarationen zu lösen, können wir eine Methode namens Factory-Muster verwenden. Diese Methode dient dazu, das Problem einer großen Anzahl von Duplikaten beim Instanziieren von Objekten zu lösen.

Code kopieren Der Code lautet wie folgt:


Klassifizierung von Fabrikmustern

Der Factory-Modus ist in einfache Factory, abstrakte Factory und Smart Factory unterteilt und erfordert nicht explizit die Verwendung eines Konstruktors.

Einfaches Factory-Muster: Verwenden Sie eine Klasse (normalerweise einen Singleton), um Instanzen zu generieren.

Komplexes Fabrikmuster: Verwenden Sie Unterklassen, um zu bestimmen, welche spezifische Klasseninstanz eine Mitgliedsvariable sein soll.

Vorteile des Fabrikmodells

Der Hauptvorteil besteht darin, dass Sie die Kopplung zwischen Objekten beseitigen können, indem Sie technische Methoden anstelle des neuen Schlüsselworts verwenden. Verhindern Sie Codeduplizierung, indem Sie den gesamten Instanziierungscode an einem Ort zentralisieren.


Nachteile des Werksmodells

Für die meisten Klassen ist es am besten, das neue Schlüsselwort und den Konstruktor zu verwenden, wodurch der Code einfacher und leichter lesbar wird. Anstatt sich die Fabrikmethode ansehen zu müssen, um das herauszufinden. 

Das Factory-Muster löst das Problem der wiederholten Instanziierung, es gibt jedoch noch ein anderes Problem, nämlich das Problem der Identifizierung, da es unmöglich ist herauszufinden, von welchem ​​Objekt sie Instanzen sind.

Code kopieren Der Code lautet wie folgt:
Alert(typeof test1); //Objekt
Alert(test1 Instanz des Objekts); //true

Wann sollte das Fabrikmuster verwendet werden?

Der Werksmodus wird hauptsächlich in den folgenden Szenarien verwendet:

1. Wenn Objekte oder Komponenten eine hohe Komplexität aufweisen
2. Wenn Sie je nach Umgebung problemlos verschiedene Instanzen eines Objekts generieren müssen
3. Beim Umgang mit vielen kleinen Objekten oder Komponenten, die die gleichen Eigenschaften haben

Konstruktormuster

Konstruktor (Konstruktormethode) kann in ECMAScript verwendet werden, um bestimmte Objekte zu erstellen. Dieser Modus kann lediglich das Problem lösen, dass der obige Werksmodus keine Objektinstanzen identifizieren kann.

Code kopieren Der Code lautet wie folgt:


Die Verwendung der Konstruktormethode löst nicht nur das Problem der wiederholten Instanziierung, sondern auch das Problem der Objekterkennung. Der Unterschied zwischen diesem Modus und dem Factory-Modus ist:

1. Die Konstruktormethode erstellt kein Objekt explizit (new Object()); 2. Weisen Sie diesem Objekt direkt Eigenschaften und Methoden zu;
3. Es gibt keine Rückgabeerklärung.

Es gibt einige Spezifikationen für Konstruktormethoden:

1. Der Funktionsname und der Name des Instanziierungskonstruktors sind gleich und werden groß geschrieben (PS: Es ist nicht obligatorisch, aber diese Schreibweise hilft, den Konstruktor von der gewöhnlichen Funktion zu unterscheiden); 2. Um ein Objekt über einen Konstruktor zu erstellen, müssen Sie den neuen Operator verwenden.

Woher kommt dieses Objekt und wo wird new Object() ausgeführt, da Objekte über Konstruktoren erstellt werden können? Der Ausführungsprozess ist wie folgt:

1. Wenn ein Konstruktor verwendet wird und neuer Konstruktor() verwendet wird, wird new Object() im Hintergrund ausgeführt 2. Geben Sie dem neuen Objekt (d. h. dem von new Object() erstellten Objekt) den Gültigkeitsbereich des Konstruktors, und dieser stellt im Funktionskörper das von new Object() erstellte Objekt dar.

3. Führen Sie den Code innerhalb des Konstruktors aus; 4. Geben Sie das neue Objekt zurück (Rückkehr direkt im Hintergrund).



Konstrukteur mit Prototyp

In js gibt es ein Attribut namens Prototyp. Nach dem Aufruf des js-Konstruktors zum Erstellen eines Objekts verfügt das neue Objekt über alle Eigenschaften des Konstruktorprototyps. Auf diese Weise können mehrere Car-Objekte erstellt werden und auf denselben Prototyp zugreifen.


Code kopieren

Der Code lautet wie folgt:


Jetzt kann eine einzelne Instanz von run() von allen Car-Objekten gemeinsam genutzt werden.

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

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ßer Artikel

R.E.P.O. Energiekristalle erklärten und was sie tun (gelber Kristall)
2 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Repo: Wie man Teamkollegen wiederbelebt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Abenteuer: Wie man riesige Samen bekommt
4 Wochen vor By 尊渡假赌尊渡假赌尊渡假赌

Heiße Werkzeuge

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Was sind die Anwendungsszenarien von Factory-Mustern im Java-Framework? Was sind die Anwendungsszenarien von Factory-Mustern im Java-Framework? Jun 01, 2024 pm 04:06 PM

Das Factory-Muster wird verwendet, um den Erstellungsprozess von Objekten zu entkoppeln und sie in Factory-Klassen zu kapseln, um sie von konkreten Klassen zu entkoppeln. Im Java-Framework wird das Factory-Muster verwendet, um: komplexe Objekte zu erstellen (z. B. Beans in Spring) Objektisolation bereitzustellen, Testbarkeit und Wartbarkeit zu verbessern. Erweiterungen zu unterstützen und die Unterstützung für neue Objekttypen durch Hinzufügen neuer Factory-Klassen zu erhöhen

Der Unterschied zwischen Entwurfsmustern und Architekturmustern im Java-Framework Der Unterschied zwischen Entwurfsmustern und Architekturmustern im Java-Framework Jun 02, 2024 pm 12:59 PM

Im Java-Framework besteht der Unterschied zwischen Entwurfsmustern und Architekturmustern darin, dass Entwurfsmuster abstrakte Lösungen für häufige Probleme beim Softwaredesign definieren und sich dabei auf die Interaktion zwischen Klassen und Objekten konzentrieren, beispielsweise Fabrikmuster. Architekturmuster definieren die Beziehung zwischen Systemstrukturen und Modulen und konzentrieren sich auf die Organisation und Interaktion von Systemkomponenten, wie z. B. eine geschichtete Architektur.

Die wunderbare Verwendung des Adaptermusters in Java-Entwurfsmustern Die wunderbare Verwendung des Adaptermusters in Java-Entwurfsmustern May 09, 2024 pm 12:54 PM

Das Adaptermuster ist ein strukturelles Entwurfsmuster, das die Zusammenarbeit inkompatibler Objekte ermöglicht. Es wandelt eine Schnittstelle in eine andere um, sodass die Objekte reibungslos interagieren können. Der Objektadapter implementiert das Adaptermuster, indem er ein Adapterobjekt erstellt, das das angepasste Objekt enthält, und die Zielschnittstelle implementiert. In einem praktischen Fall kann der Client (z. B. MediaPlayer) über den Adaptermodus Medien im erweiterten Format (z. B. VLC) abspielen, obwohl er selbst nur normale Medienformate (z. B. MP3) unterstützt.

Analyse des Decorator-Musters in Java-Entwurfsmustern Analyse des Decorator-Musters in Java-Entwurfsmustern May 09, 2024 pm 03:12 PM

Das Dekoratormuster ist ein strukturelles Entwurfsmuster, das das dynamische Hinzufügen von Objektfunktionen ermöglicht, ohne die ursprüngliche Klasse zu ändern. Es wird durch die Zusammenarbeit von abstrakten Komponenten, konkreten Komponenten, abstrakten Dekoratoren und konkreten Dekoratoren implementiert und kann Klassenfunktionen flexibel erweitern, um sich ändernden Anforderungen gerecht zu werden. In diesem Beispiel werden Milch- und Mokka-Dekoratoren zu Espresso für einen Gesamtpreis von 2,29 $ hinzugefügt, was die Leistungsfähigkeit des Dekoratormusters bei der dynamischen Änderung des Verhaltens von Objekten demonstriert.

Praktische Fallanalyse des PHP-Entwurfsmusters Praktische Fallanalyse des PHP-Entwurfsmusters May 08, 2024 am 08:09 AM

1. Factory-Muster: Trennen Sie Objekterstellung und Geschäftslogik und erstellen Sie Objekte bestimmter Typen über Factory-Klassen. 2. Beobachtermuster: Ermöglicht Subjektobjekten, Beobachterobjekte über ihre Zustandsänderungen zu benachrichtigen, wodurch eine lose Kopplung und ein Beobachtermuster erreicht werden.

Wie Entwurfsmuster mit Herausforderungen bei der Codewartung umgehen Wie Entwurfsmuster mit Herausforderungen bei der Codewartung umgehen May 09, 2024 pm 12:45 PM

Entwurfsmuster lösen Herausforderungen bei der Codewartung, indem sie wiederverwendbare und erweiterbare Lösungen bereitstellen: Beobachtermuster: Ermöglicht Objekten, Ereignisse zu abonnieren und Benachrichtigungen zu erhalten, wenn sie auftreten. Factory-Muster: Bietet eine zentralisierte Möglichkeit, Objekte zu erstellen, ohne auf konkrete Klassen angewiesen zu sein. Singleton-Muster: stellt sicher, dass eine Klasse nur eine Instanz hat, die zum Erstellen global zugänglicher Objekte verwendet wird.

Was sind die Vor- und Nachteile der Verwendung von Entwurfsmustern im Java-Framework? Was sind die Vor- und Nachteile der Verwendung von Entwurfsmustern im Java-Framework? Jun 01, 2024 pm 02:13 PM

Zu den Vorteilen der Verwendung von Entwurfsmustern in Java-Frameworks gehören: verbesserte Lesbarkeit, Wartbarkeit und Skalierbarkeit des Codes. Zu den Nachteilen gehören Komplexität, Leistungsaufwand und eine steile Lernkurve aufgrund übermäßiger Nutzung. Praktischer Fall: Der Proxy-Modus wird zum verzögerten Laden von Objekten verwendet. Setzen Sie Entwurfsmuster mit Bedacht ein, um ihre Vorteile zu nutzen und ihre Nachteile zu minimieren.

Anwendung von Designmustern im Guice-Framework Anwendung von Designmustern im Guice-Framework Jun 02, 2024 pm 10:49 PM

Das Guice-Framework wendet eine Reihe von Entwurfsmustern an, darunter: Singleton-Muster: Durch die @Singleton-Annotation wird sichergestellt, dass eine Klasse nur eine Instanz hat. Factory-Methodenmuster: Erstellen Sie eine Factory-Methode über die Annotation @Provides und rufen Sie die Objektinstanz während der Abhängigkeitsinjektion ab. Strategiemodus: Kapseln Sie den Algorithmus in verschiedene Strategieklassen und geben Sie die spezifische Strategie über die Annotation @Named an.

See all articles