Design pattern > Comportementaux > State
Ce patron permet à un objet de modifier son comportement lorsque son état interne change.
Ce patron est souvent utilisé pour implémenter une machine à états.
Un exemple d'appareil à états est le lecteur audio - dont les états sont lecture, enregistrement, pause et arrêt.
Selon ce patron il existe une classe machine à états, et une classe pour chaque état.
Lorsqu'un événement provoque le changement d'état, la classe machine à états se relie à un autre état et modifie ainsi son comportement
Context (Account)
- defines the interface of interest to clients
- maintains an instance of a ConcreteState subclass that defines the current state.
State (State)
- defines an interface for encapsulating the behavior associated with a particular state of the Context.
Concrete State (RedState, SilverState, GoldState)
- each subclass implements a behavior associated with a state of Context
Deposited $500.00 ---
Balance = $500.00
Status = SilverState
Deposited $300.00 ---
Balance = $800.00
Status = SilverState
Deposited $550.00 ---
Balance = $1,350.00
Status = GoldState
Interest Paid ---
Balance = $1,417.50
Status = GoldState
Withdrew $2,000.00 ---
Balance = ($582.50)
Status = RedState
No funds available for withdrawal!
Withdrew $1,100.00 ---
Balance = ($582.50)
Status = RedState