State (ou État en français)
Le design pattern State (ou État) est un patron comportemental qui permet à un objet de changer son comportement quand son état interne change, comme s’il changeait de classe.
🧠 Idée principale
Remplacer les instructions if/else ou switch basées sur l’état interne par des objets représentant chaque état.
📦 Composition
- Context : l’objet dont le comportement change en fonction de son état.
- State : interface commune à tous les états.
- ConcreteStates : implémentations spécifiques du comportement pour chaque état.
Implémentation
Interface d'état
class State(ABC):
@abstractmethod
def press_play(self, player):
pass
États concrets
class StoppedState(State):
def press_play(self, player):
print("▶️ Lecture démarrée.")
player.state = PlayingState()
class PlayingState(State):
def press_play(self, player):
print("⏸️ Pause.")
player.state = PausedState()
class PausedState(State):
def press_play(self, player):
print("▶️ Reprise de la lecture.")
player.state = PlayingState()
Contexte
class Player:
def __init__(self):
self.state = StoppedState()
def press_play(self):
self.state.press_play(self)
Utilisation
player = Player()
player.press_play() # ▶️ Lecture démarrée.
player.press_play() # ⏸️ Pause.
player.press_play() # ▶️ Reprise de la lecture.