


Beispiele zur Erläuterung der Verwendung des Decorator-Musters in der Java-Entwurfsmusterprogrammierung
Konzept
Das Dekoratormuster ordnet Objekten dynamisch Verantwortlichkeiten zu. Um die Funktionalität zu erweitern, bieten Dekoratoren eine flexiblere Alternative zur Vererbung.
Der Dekorateur und das dekorierte Objekt haben denselben Supertyp.
Sie können ein Objekt mit einem oder mehreren Dekoratoren umhüllen.
Da der Dekorateur und das dekorierte Objekt denselben Supertyp haben, kann jedes Mal, wenn das Originalobjekt (verpackt) benötigt wird, stattdessen das dekorierte Objekt verwendet werden.
Der Dekorateur kann sein eigenes Verhalten vor und/oder nach dem Verhalten des delegierten Dekorateurs hinzufügen, um einen bestimmten Zweck zu erreichen.
Objekte können jederzeit dekoriert werden, sodass Sie
Objekte zur Laufzeit dynamisch und unbegrenzt mit Ihren bevorzugten Dekorateuren dekorieren können.
In Java sind viele Klassen unter dem io-Paket die Verkörperung des typischen Dekoratormusters, wie zum Beispiel:
new BufferedOutputStream(OutputStream out)
new BufferedInputStream(InputStream in );
neuer PrintWriter(OutputStream out)
neuer FilterReader(Reader in);
Die dekorierte Klasse implementiert die gleiche Schnittstelle wie die dekorierte Klasse, und
ist dekorierte Klasse, es spielt keine Rolle, welche Implementierungsklasse zum Dekorieren verwendet wird
Die gleiche Geschäftsmethode, die dekorierte Klasse ruft die Methode der Dekorationsklasse auf, um die Funktion der Dekorationsklasse zu verbessern
Instanz :
Klassendiagramm
public interface IReader { void read(); } public class Reader implements IReader { @Override public void read() { System.out.println("read of Reader"); } } public class BufferedReader implements IReader { private IReader mReader; public BufferedReader(IReader reader) { this.mReader = reader; } @Override public void read() { System.out.println("read of BufferedReader"); mReader.read(); } } public class Test { public static void main(String[] args) { Reader reader = new Reader(); reader.read(); System.out.println("----------"); BufferedReader bufferedReader = new BufferedReader(reader); bufferedReader.read(); } }
Eigenschaften:
1. Dekorierte Objekte haben die gleiche Schnittstelle wie echte Objekte. Auf diese Weise kann das Client-Objekt mit dem dekorierten Objekt auf die gleiche Weise interagieren wie ein reales Objekt.
2. Das dekorierte Objekt enthält einen Verweis auf das reale Objekt
3 Das dekorierte Objekt akzeptiert alle Anfragen des Kunden. Es leitet diese Anfragen an die realen Objekte weiter.
4. Das Dekorationsobjekt kann vor oder nach der Weiterleitung dieser Anfragen einige zusätzliche Funktionen hinzufügen. Dadurch wird sichergestellt, dass zusätzliche Funktionalität zur Laufzeit extern hinzugefügt werden kann, ohne die Struktur eines bestimmten Objekts zu ändern.
Im objektorientierten Design wird die funktionale Erweiterung einer bestimmten Klasse normalerweise durch Vererbung implementiert. Nach der Dekoration wird das reale Objekt festgehalten, um seine Funktionalität zu verbessern.
Der Unterschied zwischen Dekorator- und Adaptermustern:
Über neue Verantwortlichkeiten: Adapter können während der Konvertierung auch neue Verantwortlichkeiten hinzufügen, aber der Hauptzweck liegt hier nicht. Das Dekorationsmuster fügt dem Dekorateur hauptsächlich neue Verantwortlichkeiten hinzu.
Über das Objekt, das er umhüllt: Der Adapter kennt die Details der anzupassenden Person (d. h. die Adapterklasse). Der Dekorateur kennt nur den spezifischen Typ seiner Schnittstelle (ob es sich um eine Basisklasse oder eine andere abgeleitete Klasse handelt) nur zur Laufzeit.

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



Mit der Klassenbelastung von Java wird das Laden, Verknüpfen und Initialisieren von Klassen mithilfe eines hierarchischen Systems mit Bootstrap-, Erweiterungs- und Anwendungsklassenloadern umfasst. Das übergeordnete Delegationsmodell stellt sicher

In dem Artikel wird in der Implementierung von mehrstufigem Caching in Java mithilfe von Koffein- und Guava-Cache zur Verbesserung der Anwendungsleistung erläutert. Es deckt die Einrichtungs-, Integrations- und Leistungsvorteile sowie die Bestrafung des Konfigurations- und Räumungsrichtlinienmanagements ab

In dem Artikel werden mit JPA für Objektrelationszuordnungen mit erweiterten Funktionen wie Caching und faulen Laden erläutert. Es deckt Setup, Entity -Mapping und Best Practices zur Optimierung der Leistung ab und hebt potenzielle Fallstricke hervor. [159 Charaktere]

In dem Artikel werden Maven und Gradle für Java -Projektmanagement, Aufbau von Automatisierung und Abhängigkeitslösung erörtert, die ihre Ansätze und Optimierungsstrategien vergleichen.

In dem Artikel werden benutzerdefinierte Java -Bibliotheken (JAR -Dateien) mit ordnungsgemäßem Versioning- und Abhängigkeitsmanagement erstellt und verwendet, wobei Tools wie Maven und Gradle verwendet werden.
