Identifiant :
Mot de passe :

Patrons de conception

Switch caché

Diagramme de classes :

Diagramme de classes

Points forts :

  1. 1. Extensibilité
    1. KO 1.1 Factorisation de protocole pour tous les états
    2. KO 1.2 L'ajout ou la suppression d'un état n'implique pas de modification de code
  2. 2. Gestion simplifiée
    1. OK 2.1 Changement d'état possible à l'exécution sans destruction
    2. KO 2.2 Découplage du comportement de chaque état

Contextualisations du patron abîmé sur différents problèmes

Problème 1 :

Enoncé du problème :
Modéliser le fonctionnement d'une vidéothèque. La vidéothèque met à disposition de ses clients des DVD selon trois catégories : Enfant, Normal et Nouveauté. Un DVD est dans la catégorie Nouveauté pendant quelques semaines, puis passe dans l'une des autres catégories. Le prix des DVD dépend de la catégorie. Il est probable que le système évolue pour que la catégorie Horreur soit ajoutée.
Solution optimale :

Diagramme de classes :

Diagramme de classes

Thanks to the inheritance links, we are able to distinct the DVD to its states. In these case, the addition of a new state does not imply code modification.

Solution alternative :

Diagramme de classes :

Diagramme de classes

The DVD class manages its state thanks to an enumeration. In doing so, the solution imposes a ``switch'' statement, and so, the category changing is possible. The problem of this solution concerns the extensibility. Indeed, if a new category is added, the DVD class must be modified to manage the new type.

Les têtes de mule
Cédric BOUHOURS
Cédric BOUHOURS
Cédric BOUHOURS