Java Reference
In-Depth Information
Hier das Protokoll des Programmlaufs:
Anlage deaktivieren...
Bei Kundentrieb stoert das.
Person erkannt.
Ruhig bleiben.
Feierabend.
Aktivierung der Alarmanlage.
Person erkannt.
RING RING
Befindet sich die Alarmanlage im Zustand AlarmanlageInaktiv , so wird kein
Alarm ausgegeben. Im Zustand AlarmanlageAktiv hingegen wird ein akustischer
Alarm ("RING RING") ausgelöst.
Die Alarmanlage in diesem Beispiel ist relativ einfach, da die Bestimmung der Nachfol-
gezustände statisch erfolgt und von keinen Bedingungen abhängt. Daher konnte für
die Realisierung der Zustandsübergänge die in Kapitel 4.14.3 beschriebene Grundform
gewählt werden, in der das Kontextobjekt den Nachfolgezustand selbst bestimmt.
4.14.4
Einsatzgebiete
Ein jedes zustandsabhängiges Verhalten kann durch dieses Entwurfsmuster beschrie-
ben werden. Beispiele für zustandsbehaftete Probleme sind:
x Bedienelemente mit Zuständen einer grafischen Benutzeroberfläche und
x Zustände von parallelen Einheiten (Prozesssteuerung).
4.14.5
Bewertung
4.14.5.1 Vorteile
Die folgenden Vorteile werden gesehen:
x Zustände werden in Form von Klassen realisiert. Das gesamte Verhalten für einen
Zustand ist in einer einzigen Klasse, einer konkreten Zustandsklasse, konzentriert.
Ein Kontextobjekt hat immer einen bestimmten Zustand und enthält damit immer ein
Objekt einer solchen Zustandsklasse. Das Verhalten in einem Zustand ist gekapselt,
was die Übersichtlichkeit erhöht.
x Die Erweiterbarkeit ist gegeben. Ein neuer Zustand entspricht einer neuen Klasse.
Alles was getan werden muss, ist, auf jeden Fall eine neue Klasse für diesen Zu-
stand zu implementieren. Je nach gewählter Implementierungsalternative sind keine
oder nur geringe Änderungen an der Kontextklasse nötig.
x Die langwierigen Fallunterscheidungen, wie sie beim erwähnten funktionsorientier-
ten Ansatz verwendet wurden, entfallen vollständig.
x Durch dieses Muster wird es möglich, Zustandsklassen eventuell auch in einem an-
deren Kontext wiederzuverwenden.
Search WWH ::




Custom Search