• Keine Ergebnisse gefunden

State Pattern

N/A
N/A
Protected

Academic year: 2022

Aktie "State Pattern"

Copied!
12
0
0

Wird geladen.... (Jetzt Volltext ansehen)

Volltext

(1)

State Pattern

Stefan Lohr, Robert Zima

(2)

Inhalt

Eigenschaften

Motivation

Beispiel

Anwendung

Struktur

Implementierung

Generelle Struktur

Implementierungsarten

Vor- und Nachteil

(3)

Eigenschaften

Beschreibung:

Ermöglicht es einem Objekt, sein Verhalten zu ändern, wenn sein interner Zustand wechselt.

Typ:

Objektbasiert und Verhaltensorientiert

Anwendungsbeispiele:

Kaugummi-/Kaffeeautomat, TCP-Protokoll, Grafikprogramme

Auch bekannt als:

Zustand, Objekte für Zustände (Objects for States)

(4)

Motivation

Ein TCPConnector soll implementiert werden.

Das verhalten eines Objekts soll abhängig von seinem Zustand sein.

Große Switch-Anweisungen sollen aber vermieden werden.

Jeder Fall der Switch-Anweisung soll in einer eigenen Klasse implementiert werden.

Der Zustand des Objektes selbst soll wieder ein Objekt sein, das unabhängig von den anderen Objekten ist.

(5)

Beispiel - Anwendung

Ein TCPAutomat (stark vereinfacht).

Drei Zustände.

Der Verhalten der Funktionen in den

einzelnen Zuständen ist unterschiedlich.

Jeder Zustand

bekommt eine eigene Klasse anstatt einen Switch-Block.

Established Closed

Listen

PassiveOpen() Close()

Reset() SYNACK()

(6)

Beispiel - Struktur

TCPConnection:

Schnittstelle für den Benutzer mit den Funktionen einer TCPConnection.

Besitzt eine Instanz eines konkreten Zustands

TCPState:

Abstrakte Klasse die einen TCPState definiert um die Konkreten States zu Kapseln

TCPConcreteStates:

Konkrete States, die Ihrem Zustand entsprechende Implementierungen enthalten.

(7)

Beispiel - Implementierung

Vorführung des Programmcodes

Beispiel in C#

(8)

Generelle Struktur

Context:

Definiert eine Schnittstelle für den Client.

Besitzt eine Instanz eines konkreten Zustandes.

State:

Definiert eine Schnittstelle zur Kapselung des Verhaltens entsprechend einem Zustand.

ConcreteState:

Jede konkrete Klasse implementiert ein Verhalten entsprechend Ihrem Zustand.

(9)

Implementierungsarten [1/2]

Folgezustände in Tabelle hinterlegen

Verhalten kann geändert werden ohne das man das Programm ändern muss.

Tabellenzugriffe sind langsamer wie direkte Funktionsaufrufe.

Zustände beim Start erstellen

Initialaufwand ist hoch.

Sinnvoll bei vielen und schnellen Zustandsänderungen

Zustand bei gebrauch erstellen (und löschen)

Initialaufwand ist niedrig

Sinnvoll wenn die States sehr groß sind und / oder selten Zustandswechsel stattfinden.

(10)

Implementierungsarten [2/2]

Context ändert den Zustand

Context muss wissen was der Folgezustand ist.

Zustandsänderungen finden an einer Stelle statt.

Context muss alle konkreten Klassen kennen.

Jede ConcreteState ändert den Zustand selbst

Den ConcreteState Klassen wird die State-Variabel übergeben und kann somit geändert werden.

Zustandsänderungen sind dezentral.

Die Klasse muss selbst ihren Folgezustand/klasse kennen (abhänigkeit).

(11)

Vor- und Nachteil

Vorteile

Schwer zu lesende Switch-Anweisungen werden vermieden.

Weitere Zustände können auf einfache Weise hinzugefügt werden.

Die Wartbarkeit wird erhöht.

Zustandsobjekte können wiederverwendet werden.

Nachteil:

Bei einfachen Anwendungen ist der

Implementierungsaufwand verhältnismäßig sehr hoch und nicht unbedingt von Nutzen.

(12)

Vielen Dank für Eure Aufmerksamkeit

Noch Fragen?

Referenzen

ÄHNLICHE DOKUMENTE

Pro Senectute und Alzheimer Schweiz setzen sich dafür ein, dass mehr Men- schen in der Schweiz über Demenz informiert sind – und sie Betroffene unterstützen können.. Am

Da Produkte aus der Apotheke meist besonders hautverträglich sind und oft auch keine Duft- stoffe enthalten, eignen sich Syndets auch für trockene oder empfindliche Haut..

Auch Leber und Galle lassen sich durch das Salz stärken. Zudem ist es in der Lage, eitrige Prozesse zu lin- dern. Das Funktionsmittel regt Ent- giftungsorgane an und ist daher

Durch sozial- und gesellschaftspolitische Einflussnahme auf allen Ebenen sowie durch Aufklärung und Information der Öffentlichkeit, wirkt die LAG SELBSTHILFE NRW darauf hin, dass

zügigkeit, also das Recht, sich in der EU frei zu bewegen und im europäi- schen Ausland zu leben und zu arbei- ten, nicht mehr für die Briten gelten würde.. Auch das visumfreie

lich, offenen Geistes und modern zu sein, wirklich europäisch zu sein, bedeutet, die Lehren des Islams in einer Weise zu überdenken und sogar zu modifizieren, dass sich die

Überdies sind sie kaum oder gar nicht veränderbar, auch wenn sie teilweise durch vorgeburtliche Einflüsse über das Gehirn der Mut- ter geprägt sind“ (Gerhard Roth S. 89 f.).. Auf

– Klar, sagt Heike, für James Dean sind wir alle schon mal gestorben.. – Santa Barbara ist nichts als ein stilles, verschlafenes Nobelnest mit jeder