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.
In this solution, if we add a new decoration, there is no code modification. Moreover, the decorators are able to decorate themselves.
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
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
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
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
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
This solution presents problems on decoupling and extensibility.
Cliquez ici pour voir le patron abîmé déduit de cette solution alternative
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