Identifiant :
Mot de passe :

Patrons de conception

Changement dynamique d'état

Enoncé du problème :

Modéliser le fonctionnement d'un diffuseur VOD. La vidéothèque met à disposition de ses clients des films selon trois catégories : Enfant, Normal et Nouveauté. Un film est dans la catégorie Nouveauté pendant quelques semaines, puis passe dans l'une des autres catégories. Le prix des films 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

Grâce aux relations d'héritages, nous sommes capables de distinguer le film de son état. Dans ce cas, l'ajout d'un nouvel état n'implique pas de modification de code.

Solution alternative 1 :

Diagramme de classes :

Diagramme de classes

La catégorie est une sous classe de VID, imposant la destruction des instances pour changer la catégorie. La question de la validité de la solution est ouverte su l'énoncé. Cependant, nous avons considéré cette solution comme valide en utilisant la patron Prototype et en utilisant une catégorie en paramètre.

Cliquez ici pour voir le patron abîmé déduit de cette solution alternative

Solution alternative 2 :

Diagramme de classes :

Diagramme de classes

La classe DVD gère son état comme une énumaration. En faisant cela, la solution impose a switch pour changer de catégorie. Le problème de cette solution concerne l'extensibilité. En effet, si une nouvelle catégorie est ajoutée, la classe DVD devra être modifiée pour gérer le nouveau type.

Cliquez ici pour voir le patron abîmé déduit de cette solution alternative

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