Beschreibung der Dekorateurmodus
HINWEIS: Verwenden Sie eine Klasse, um die funktionalen Objekte einer anderen Klasse vor oder nach dynamisch zu ändern, und fügen Sie ihm einige zusätzliche Funktionen hinzu. Dies ist eine Dekoration der Funktionen eines Klassenobjekts. Die dekorative Klasse und die dekorierte Klasse erfordern dieselbe Zugriffsschnittstellenmethode (Funktion). In dynamischen objektorientierten Klassen wird die Implementierung im Allgemeinen durch die Implementierung derselben Schnittstelle eingeschränkt. Die dekorative Klasse muss einen Bezug auf die dekorierte Klasse haben, die verwendet wird, um die entsprechenden dekorativen Klassenmethoden in der dekorativen Klasse zu bezeichnen und sie dann zu ändern.
Beispiele für Szenarien:
1>. Zum Beispiel, wenn wir Kleidung in unserem Leben, ein Hemd, eine Anzugjacke, eine Hose, eine Krawatte und ein Paar schöne Lederschuhe tragen; Jeder zusätzliche ist eine Dekoration für die Front oder den ganzen Körper;
2>. Zum Beispiel haben wir eine Funktionsmethode unter einer Klasse, mit der möglicherweise Protokolle geschrieben werden können, die für Benutzer verwendet werden können, um sich in einer solchen Funktion anzumelden. Möglicherweise müssen wir die aktuellen Operatorinformationen erhalten, bevor wir das Protokoll schreiben, oder ein Protokoll nach erfolgreichem Anmelden schreiben. Die zusätzlichen Vorgänge vor dem Schreiben des Protokolls sind im Allgemeinen der Zweck des Schreibens von Protokollen. Das erfolgreiche Schreiben des Protokolls nach der erfolgreichen Aufzeichnung ist im Allgemeinen auch die Betriebsinformationen des Protokollprozesses.
Daher wird der Dekoratormodus zur Implementierung verwendet, und die beiden arbeiten ähnlich. Es ist die Erweiterung des funktionellen Objekts des Dekorateurs durch den Dekorator, der im Wesentlichen der gleiche Funktionsbereich der ursprünglichen Methode ist.
Instanzquellcode
1. Dekorierte Kategorie
Die Codekopie lautet wie folgt:
Funktion Wear () {
}
Wee.prototype.shirt = function () {
// ein Hemd tragen
console.log ('trage ein Hemd');
}
2. Dekorateure
Die Codekopie lautet wie folgt:
Funktionsdekorateur (Verschleiß) {
Diese Wäsche = Verschleiß;
}
Decorator.Prototype.shirt = function () {
this.wear.shirt ();
// Nach dem Tragen eines Hemdes zog ich wieder eine Krawatte an
}
3.. Wie man benutzt
Die Codekopie lautet wie folgt:
var wear = new Wear ();
VAR -Dekorateur = neuer Dekorateur (Verschleiß);
Dekorateur.Shirt ();
Dies ermöglicht eine dynamische erweiterte Dekoration des Wear -Hemd -Funktionsobjekts. Sie müssen nicht wissen, wie die ursprüngliche dekorative Methode durchgeführt wird. Wissen Sie nur, was seine Funktion ist, und wissen Sie dann, was die zusätzliche Funktion, die wir ihm hinzufügen möchten.
Andere Anweisungen
Das Dekorateurmuster zieht die objektorientierte Methode wirklich ab: das Prinzip der Öffnung für Erweiterungen und Abschlüsse auf Modifikationen; Alle gewünschten funktionalen Methoden werden durchgeführt, ohne den [Dekorierten Klassenkleidung] zu modifizieren und den Dekorateur für [Dekorateurklasse] zu erweitern.
Ein Hauptmerkmal des Dekorationsmodells ist, dass der Dekorateur auf den Dekorateur bezieht, um eine nicht modifizierte Dekoration des Dekorateurs zu erreichen.
Simulation: Szene eines Hemdes zuerst, dann eine Krawatte und dann ein Anzug: Der Dekorateur oben bleibt unverändert:
2. Dekorateure:
Die Codekopie lautet wie folgt:
Funktionsdekorateur (Verschleiß) {
Diese Wäsche = Verschleiß;
}
Decorator.Prototype.shirt = function () {
this.wear.shirt (); // hier nur Hemden trage;
}
3.. Erstellen Sie Krawatten- und Anzugsunterrichtskurse, ähnlich der Erben der Dekorateur-Unterklasse
Die Codekopie lautet wie folgt:
Funktionsdekorator_tie (Dekorateur) {
this.decorator = Dekorateur;
}
Decorator_tie.prototype.shirt = function () {
this.decorator.shirt (); // ein Hemd tragen
console.log ('wieder eine Krawatte');
}
Funktionsdekorator_Western (Dekorateur) {
this.decorator = Dekorateur;
}
Decorator_Western.Prototype.shirt = function () {
this.decorator.shirt ();
console.log ('wieder einen Anzug tragen');
}
Wie man verwendet:
Die Codekopie lautet wie folgt:
// Zieh zuerst dein Hemd an
var wear = new Wear ();
VAR -Dekorateur = neuer Dekorateur (Verschleiß);
//decorator.shirt ();
// trage wieder eine Krawatte
var tie = neuer dekorator_tie (Dekorateur);
//tie.shirt ();
// wieder einen Anzug anziehen
var Western = neuer Dekorateur_Western (Krawatte);
Western.Shirt ();
Dies ist ein Scheinbeispiel für das Anziehen und Dekorieren;