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