Identifiant :
Mot de passe :

Patrons de conception

Décoration récursive d'objets

Enoncé du problème :

Modéliser un système permettant d'afficher des objets visuels à l'écran. Un objet visuel peut être un texte ou une image. En cas de besoin, le système doit permettre d'ajouter à ces objets une barre de défilement verticale, une barre de défilement horizontale, et une bordure (tous ces ajouts sont cumulables). Il est probable que le système évolue pour que l'on puisse ajouter aux objets visuels une barre de menu.

Solution optimale :

Diagramme de classes :

Diagramme de classes

In this solution, if we add a new decoration, there is no code modification. Moreover, the decorators are able to decorate themselves.

Solution alternative 1 :

Diagramme de classes :

Diagramme de classes

Except for adding a new Decorator, this solution is not so bad

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

Solution alternative 2 :

Diagramme de classes :

Diagramme de classes

In this solution, there is no extensibility possibilities, no maximal factorisation between decorators and objects to decorate, and a decorator can't be decorated by another decorator

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

Solution alternative 3 :

Diagramme de classes :

Diagramme de classes

In this solution, we cannot manage the decoration during the execution.

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

Solution alternative 4 :

Diagramme de classes :

Diagramme de classes

In this solution, it is not possible to add or to remove a object to decorate withtout doing code mofication. The factorisation between decorators and objects to decorate is not maximal. Moreover, a decorator cannot be decorated by another decorator.

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

Solution alternative 5 :

Diagramme de classes :

Diagramme de classes

This solution cannot manage the decoration during the execution, and there is some problems concerning the extensibility and the decoupling.

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

Solution alternative 6 :

Diagramme de classes :

Diagramme de classes

This solution presents problems on decoupling and extensibility.

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

Solution alternative 7 :

Diagramme de classes :

Diagramme de classes

This solution is not so bad, except for the decoration of a decorator.

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