Java Reference
In-Depth Information
x Warum müssen die Kollegen von einer gemeinsamen Basisklasse ableiten? Kön-
nen die Objekte, die zu benachrichtigen sind, nicht von gänzlich unterschiedlichem
Typ sein?
Diese Fragen müssen in der Regel anwendungsspezifisch beantwortet werden und
sind nur schlecht durch eine allgemeine Herangehensweise im Rahmen des Ver-
mittler-Musters zu lösen. In [Gr102] wird eine Lösung am Beispiel eines Vermittlers
zwischen grafischen Objekten einer kleinen Anwendung gezeigt, bei der die oben ge-
nannten Punkte exemplarisch berücksichtigt sind.
4.13.3.4 Programmbeispiel
Es handelt sich im Folgenden um ein sehr einfaches Beispiel: der konkrete Vermittler
kennt nur den Nachrichtenaustausch zwischen zwei Objekten - einem Objekt der
Klasse KonkreterKollegeA und einem Objekt der Klasse KonkreterKollegeB .
Selbst an diesem einfachen Beispiel ist aber bereits der Effekt des Vermittler-Musters
zusehen, nämlich dass die Klassen KonkreterKollegeA und Konkreter-
KollegeB nicht voneinander abhängig sind, obwohl ihre Objekte miteinander kommu-
nizieren. Sie sind nur von dem Vermittler abhängig, über den sie miteinander kommu-
nizieren. Das Beispiel orientiert sich an der einfachen Lösungsvariante im Bild 4-39.
Die abstrakte Klasse Kollege ist die Basisklasse für alle Kollegen:
// Datei: Kollege.java
public abstract class Kollege
{
// Instanzvariable
private Vermittler vermittler; // Referenz auf den Vermittler
// Konstruktor
public Kollege (Vermittler v)
{
vermittler = v;
}
// Wird von den ableitenden Klassen ueberschrieben
public void aenderung()
{
vermittler.aenderungAufgetreten (this); // Vermittler informiert
}
}
Die Klasse KonkreterKollegeA ist von der Klasse Kollege abgeleitet. Über die
Methode aenderung() informiert sie einen Vermittler über Zustandsänderungen:
// Datei: KonkreterKollegeA.java
public class KonkreterKollegeA extends Kollege
{
// Konstruktor
public KonkreterKollegeA (Vermittler v)
{
super (v);
Search WWH ::




Custom Search