Design Pattern : Etat

Par Bastien Cramillet et Mathieu Briand, groupe S4A1



Explications :

Le patron de conception état est un design pattern utilisé pour représenter les différents états d'un objet. Il permet à un objet de changer partiellement d'état et donc son comportement à l'exécution.

Le principal intérêt de tels objets est d'éviter d'avoir de grosses portions de code constituées uniquement de switch cases. De plus, l'ajout d'états supplémentaires se fait beaucoup plus simplement en utilisant des objets à états.

Le mécanisme à état est basé sur une classe container et d'un ensemble de classes représentants les différents états possible.

Les classes représentant les différents états possibles dérivent toutes de la même classe abstraite et en surchargent les méthodes en fonction de leur comportement dans l'état implémenté.

La classe container dispose d'un attribut du type de la classe abstraite, qui changera de contenu en fonction de l'état du mécanisme. Toutes les méthodes de cette classe container font appel aux méthodes de la classe représentant l'état courant.

Notre classe container représente donc un objet qui peut totalement changer de comportement en fonction de son état tout en conservant le même type.

Design Pattern Etat

Exemple

Voici un exemple composé de 8 fichiers java.

Dans cet exemple, on crée une horloge, faisant aussi réveil. Cette horloge est composé de deux boutons.

A l'aide de ses deux boutons on peut consulter l'heure courante, ainsi que l'heure du réveil, et modifier les minutes et heures de l'heure courante et du réveil.

Puisqu'il n'y a que deux boutons, on utilise donc le pattern Etat qui nous permet de donner une action différente à un clic de bouton suivant l'état dans lequel est l'horloge.

Bouton.java
BoutonDroit.java
BoutonGauche.java
Etat.java
Heure.java
HeureCourante.java
Horloge.java
Reveil.java