Dekorateur wird oft als "Dekoration" übersetzt. Diese beiden Einheiten sind im Dekorateurmodus erforderlich.
Definitionsdefinition: Fügt einem Objekt dynamisch einige zusätzliche Verantwortung hinzu, z. B. das Malen der Wand. Die Verwendung des Dekoratormodus ist flexibler als die Verwendung der Erzeugung von Unterklassen, um eine funktionelle Expansion zu erzielen.
Warum Dekorateur verwenden?
In der Regel können wir die Vererbung verwenden, um die Funktionserweiterung zu erreichen. Muss diese Expansionsfunktionen vorhersehen.
Der Grund für die Verwendung von Dekorateur ist, dass diese Funktionen vom Benutzer dynamisch entschieden werden müssen. Der Dekorateur bietet eine "Plug -and -Play" -Methode, um zu entscheiden, wann die Funktionen während der Laufzeit hinzugefügt werden sollen.
So verwenden Sie den dekorativen Modus
Nehmen Sie das Beispiel eines Pfahl -Fahrens in Adapter. Fahren, wie das Graben.
Erstellen wir zuerst eine Schnittstelle:
Die Codekopie lautet wie folgt:
öffentliche Schnittstelle {
public void Insert ();
}
Die Schnittstellenarbeit hat eine spezielle Implementierung: Setzen Sie quadratische Stapel oder kreisförmige Stapel ein. Nehmen wir das Einfügen eines quadratischen Stapels als Beispiel:
Die Codekopie lautet wie folgt:
öffentliche Klasse Squarepeg implementiert Arbeit {
public void Insert () {
System.out.println ("Quadratische Stapelinsertion");
}
}
Es gibt jetzt eine Anwendung: Bevor der Stapel getrieben wird, wird ein Loch gegraben, und nach dem Stapel wird das Holzbrett auf den Stapel genagelt kann notwendig sein, um das Rack nach dem Stapel zu nageln (nur eine Metapher).
Dann verwenden wir den Dekoratormodus, in dem der quadratische Pfahl Squarepeg das dekorierte (durch Farbe gestrichen) ist, wir müssen etwas "Farbe" auf dem Dekorieren malen, und diese Farben sind diese zusätzlichen Funktionen.
Die Codekopie lautet wie folgt:
Public Class Decorator implementiert Arbeit {
private Arbeit;
// Die zusätzliche Funktionalität ist in dieser Liste verpackt
private ArrayList Andere = new ArrayList ();
// Verwenden Sie die kombinierte neue Methode im Konstruktor, um Arbeitsobjekte einzuführen.
öffentlicher Dekorateur (Arbeitsarbeit) {
this.work = Arbeit;
andere.add ("ein Loch graben");
andere.add ("Nagelbrett");
}
public void Insert () {
Newmethod ();
}
// In der neuen Methode fügen wir vor dem Einfügen andere Methoden hinzu. Die Reihenfolge hier wird vom Benutzer flexibel angegeben
public void newmethod () {
othermethod ();
Arbeit.insert ();
}
public void othermethod () {
ListIterator listIterator = Andere.Listiterator ();
while (listiterator.hasnext ()) {
System.out.println (((String) (listItIterator.Next ()) + "in Bearbeitung");
}
}
}
Im obigen Beispiel haben wir sowohl die Grabenlöcher als auch die Nagelboards vor dem Stapeleinsatz bewertet.
OK, der Dekorateurmodus ist fern, sehen wir sehen, wie man es nennt:
Die Codekopie lautet wie folgt:
Arbeit squarepeg = neuer squarepeg ();
Arbeitsdekorateur = neuer Dekorateur (Squarepeg);
Dekorateur.insert ();
Der Dekoratormodus ist hier abgeschlossen.
Wenn Sie vorsichtig sind, werden Sie feststellen, dass der obige Anruf dem Anruf ähnelt, den wir beim Lesen der Datei gelesen haben:
Die Codekopie lautet wie folgt:
FileReader fr = new FileReader (Dateiname);
BufferedReader BR = neuer BufferedReader (FR);
Tatsächlich wird die E/A -API von Java mit Dekorateur implementiert.
Dekorateur -Implementierung in Jive
Im Forum -System können einige Sonderzeichen im Forum, wie z. B. "Down With XXX", nicht erscheinen. Wir müssen diese "reaktionären" Schriftarten filtern. Lassen Sie sie nicht erscheinen oder zeigen Sie sie in hoher Helligkeit an.
In einem Artikel, der speziell über Jive in der IBM Java -Spalte spricht, wurde erwähnt, dass ForumSageFilter.java in Jive den Dekorationsmodus verwendet. Dann können Sie ForummessageFilter als Dekorationsmodus neu organisieren.
Wenn wir entscheiden, ob es sich wirklich um den Dekorationsmodus handelt und den Dekorateurmodus wirklich verwendet, müssen wir die Definition des Dekorationsmodus und der beteiligten Rollen erfassen (Dekoration und Dekorateur).