Definition: Erweitern Sie die Funktionalität eines Objekts dynamisch, ohne die Originaldatei ändern und die Vererbung verwenden zu müssen. Es wickelt das reale Objekt durch Erstellen eines Wrapper -Objekts, dh Dekoration.
Merkmale:
(1) Dekorative Objekte und reale Objekte haben die gleiche Schnittstelle. Auf diese Weise kann das Client -Objekt mit dem dekorativen Objekt auf die gleiche Weise wie das reale Objekt interagieren.
(2) Das dekorative Objekt enthält einen Verweis auf ein reales Objekt
(3) Das dekorative Objekt akzeptiert alle Anfragen vom Kunden. Es leitet diese Anfragen an das reale Objekt weiter.
(4) Dekorative Objekte können einige zusätzliche Funktionen vor oder nach dem Weiterleiten dieser Anforderungen hinzufügen. Dies stellt sicher, dass zur Laufzeit zusätzliche Funktionen extern hinzugefügt werden können, ohne die Struktur eines bestimmten Objekts zu ändern. Bei objektorientiertem Design werden funktionale Erweiterungen zu einer bestimmten Klasse normalerweise durch Vererbung erreicht.
Anwendungen in der Entwicklung auf Unternehmensebene und häufig verwendeten Frameworks: IO-Streaming-zugrunde liegende Architektur
Zusammensetzung:
(1) Abstrakte Komponentenrolle: Geben Sie eine abstrakte Schnittstelle an, um Objekte zu regulieren, die bereit sind, zusätzliche Verantwortlichkeiten zu erhalten.
(2) Rolle der Betonkomponenten: Definieren Sie eine Klasse, die zusätzliche Verantwortlichkeiten erhält.
(3) Rolle der Dekorateure: Hält eine Instanz eines Komponentenobjekts und implementiert eine Schnittstelle, die mit der abstrakten Komponentenschnittstelle übereinstimmt.
(4) Rolle der Betondekorateure: Verantwortlich für das Hinzufügen zusätzlicher Verantwortung zu Komponentenobjekten.
Spezifische Beispiele:
/*** Die folgenden Beispiele für Dekorationshäuser*/Public Class Demo {public static void main (String [] args) {Generichouse House = newgenouse (); Garage Garage = neue Garage (Haus); garage.dosomething (); Küche Küche = neue Küche (Haus); küche.dosomething (); }}/*** Abstrakte Komponentenrolle: Eine Schnittstelle zur Regulierung des Ortes der spezifischen Dekoration*/Schnittstelle Abstracthouse {public void dosomething ();}/*** Dekorative Rolle: Halten Sie das Objekt zum Dekorieren*/Klasse -Master -Implements Abstracthouse {private Abstracthouse Abstracthouse; public master (Abstracthouse Abstracthouse) {this.abStracthouse = Abstracthouse; } public void dosomething () {System.out.println ("Dekorative Rolle: Dekorative Rollenhalter, hier ist der Besitzer des Hauses"); Abstracthouse.dosomething (); }}/*** Spezifische Komponentenrolle: Spezifisches Objekt, das dekoriert werden muss }}/*** Spezifische dekorative Rolle: Die spezifische Dekoration wird hier getroffen und erbt von der dekorativen Rolle. Da die dekorative Rolle das dekorative Objekt enthält, * hält sie auch das dekorative Objekt und kann dekoriert werden */Class Garage erweitert den Master {öffentliche Garage (Abstracthouse Abstracthouse) {Super (Abstracthouse); } public void dosomething () {super.dosomething (); System.out.println ("Spezifische dekorative Rolle: Dekorieren Sie hier, dekorieren Sie einen der Haus in eine Garage, damit das Haus das Auto aufbewahren kann"); }}/*** Spezifische dekorative Rolle: Die spezifische Dekoration erbringt hier, sie erbt von der dekorativen Rolle, da die dekorative Rolle das dekorative Objekt enthält,* so hält es auch das dekorative Objekt und kann dekoriert werden*/Class Kitchen erweitert Master {öffentliche Küche (Abstracthouse -Abstracthouse) {Super (Abstracthouse); } public void dosomething () {super.dosomething (); System.out.println ("Spezifische dekorative Rolle: Dekorieren Sie hier, dekorieren Sie einen der Hause in eine Küche, damit das Haus kochen kann"); }}In der tatsächlichen Entwicklung spielt die Verpackungsfunktion der Dekorationsmuster eine großartige Rolle. Wir können einige andere Operationen auf dem Objekt ausführen, ohne das ursprüngliche Objekt zu ändern, was uns daran hindert, das Objekt zu transformieren, aber gleichzeitig können wir einige Vorgänge gut ausfüllen.
Das obige ist der gesamte Inhalt dieses Artikels. Ich hoffe, es wird für das Lernen aller hilfreich sein und ich hoffe, jeder wird Wulin.com mehr unterstützen.