


JavaScript-Designmuster, Fabrikmuster und Konstruktormuster_Javascript-Kenntnisse
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.
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
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.
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.
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.
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.
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
This.miles = Meilen;
}
Car.prototype.run = function () {
return this.model " hat getan " this.miles " Meilen ";
};
var Benz = new Car('S350',2010,20000);
var Ford = neues Auto('Ford',2012,12000);
console.log(Benz.run());//"S350 hat 20.000 Meilen zurückgelegt "
console.log(Ford.run());
Jetzt kann eine einzelne Instanz von run() von allen Car-Objekten gemeinsam genutzt werden.

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

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

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.

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.

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.

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.

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.

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.

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.
