Identifiant :
Mot de passe :

Patrons de conception

Réutilisation excessive d'une association préexistante

Diagramme de classes :

Diagramme de classes

Points forts :

  1. 1. Extensibilité
    1. KO 1.1 Factorisation du chaînage entre objets
    2. KO 1.2 Point d'accès unique pour le client
    3. OK 1.3 L'ajout ou la suppression d'un nouveau élément dans la chaîne ne nécessite pas de modification de code

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

Problème 1 :

Enoncé du problème :
Modéliser un gestionnaire d’aide d’une application java. Un gestionnaire d’aide permet d’afficher un message d’aide en fonction de l’objet sur lequel le client a cliqué. Par exemple, le « ? » situé quelques fois à côté du menu contextuel d’une fenêtre Windows permet d’afficher l’aide en fonction du bouton ou de la zone sur laquelle on clique. Si le bouton sur lequel on clique ne contient pas d’aide, c’est la zone contenante qui affiche son aide, et ainsi de suite. Si aucun objet de contient d’aide, au final, le gestionnaire affiche « Pas d’aide disponible pour cette zone ». Instanciez votre diagramme de classe dans un diagramme de séquence sur l’exemple d’une fenêtre d’impression. Cette fenêtre (JDialog) est constituée d’un texte explicatif (JLabel), et d’un container (JPanel). Ce dernier contient un bouton Imprimer (JButton) et un bouton Annuler (JButton). Le bouton Imprimer contient l’aide « Lance l’impression du document ». Le bouton Annuler, le texte ainsi que la fenêtre ne contiennent pas d’aide. Enfin, le container contient l’aide « Cliquez sur l’un des boutons ». Dans le diagramme de séquence, faites apparaître les scénarii : « L’utilisateur demande l’aide du bouton Imprimer », « L’utilisateur demande l’aide du bouton Annuler », et « L’utilisateur demande l’aide du texte ».
Solution optimale :

Diagramme de classes :

Diagramme de classes

Diagramme de séquence :

Diagramme de séquence

A classical instantiation of the pattern.

Solution alternative :

Diagramme de classes :

Diagramme de classes

Diagramme de séquence :

Diagramme de séquence

There is a separation between containers and contents. Two issues arise. The first concerns the validity of the solution and the second concerns the interaction with another misaligned pattern presents in the design. We have considered this solution valid even if delegation between content objects is not possible. The problem can be solved by adding a reflexive association on the class Content.

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