Java Reference
In-Depth Information
4.14 Das Verhaltensmuster Zustand
4.14.1
Name/Alternative Namen
Zustand (engl. state).
4.14.2
Problem
Zustandsbehaftete Probleme werden oft in einem funktionsorientierten Ansatz durch
die Programmierung einer Fallunterscheidung gelöst, die die aktuellen Zustände und
das zugehörige Verhalten auflistet. Sollen dann neue Zustände hinzugefügt werden,
muss die Fallunterscheidung erweitert werden, was schnell unübersichtlich und daher
fehleranfällig wird.
Zustandsbehaftete Aufgaben sollen so gelöst werden, dass jeder
Fall einer klassischen Bedingungsanweisung auf ein Objekt einer
eigenen Klasse abgebildet wird.
4.14.3
Lösung
Eine Klasse, deren Objekte ein zustandsabhängiges Verhalten besitzen, wird im Zu-
standsmuster mit dem Klassennamen Kontext bezeichnet. Die Objekte dieser Klasse
werden kurz Kontextobjekte genannt.
Für jeden möglichen Zustand eines Kontextobjekts gibt es in diesem Muster eine eige-
ne Zustandsklasse, die das Verhalten im entsprechenden Zustand kapselt.
Im Entwurfsmuster Zustand hängt zur Kompilierzeit der Kontext
nicht von den konkreten Zustandsklassen direkt ab, sondern nur
von einem Interface bzw. von einer abstrakten Klasse, die das
Kontextobjekt als Abstraktion vorgibt. Diese abstrakte Zustands-
schnittstelle wird von den konkreten Zustandsklassen implemen-
tiert.
Dadurch, dass - wie schon erwähnt - der Kontext die Zustandsschnittstelle vorgibt,
wird eine Dependency Inversion erreicht, d. h. der Kontext hängt überhaupt nicht von
der Ausprägung der Methoden des eingenommenen konkreten Zustands ab.
Objekte von Klassen, die die Zustandsschnittstelle implementieren, werden kurz Zu-
standsobjekte genannt. Zur Laufzeit tritt dann ein Zustandsobjekt bei Einhaltung der
Verträge an die Stelle der Schnittstelle.
Search WWH ::




Custom Search