Applied Design Patterns with Java
Behavioral :: State (305) {C ch 23}
Applicability
Use the State pattern in either of the following cases:
- An object's behavior depends on its state, and it must
change its behavior at run-time depending on that state.
- Operations have large, multipart conditional statements
that depend on the object's state. This state is usually represented by one or more enumerated constants. Often,
several operations will contain this same conditional structure. The State pattern puts each branch of the conditional in a separate class.
This allows treating the object's state as an object in its own right that can vary independently from other objects.
Structure
Participants
- Context
(TCPConnection) defines the interface
of interest to clients, and maintains an instance of a ConcreteState subclass that defines the current state.
- State (TCPState) defines
an interface for encapsulating the behavior associated with a particular state of the Context.
- ConcreteState subclasses (TCPEstablished,
TCPListen, TCPClosed) each subclass implements a behavior associated with a state of the Context.
Catalog Behavioral Prev Next