:: Enseignements :: ESIPE :: E4INFO :: 2008-2009 :: Programmation Orientée Objet ::
![[LOGO]](http://igm.univ-mlv.fr/ens/resources/mlv.png) | Proxy, State et Logger |
Exercice 1 - Proxy Pattern
Voici quelques classes permettant de gérer un album de photo
td4photo.zip.
On cherche pour déboguer à afficher un message
lorsque l'on entre ou sort d'une méthode particulière d'un objet.
-
Créez un objet java.util.logging.Logger
et afficher un message avec le niveau (Level)
ALL.
Affichez en utilisant la méthode log un
message de niveau WARNING.
-
Rappelez le principe du design pattern Proxy.
Écrivez la méthode createPhotoProxy(Photo photo,Logger logger) dans
la classe PhotoFactory qui prend un objet
de type Photo et un logger et
qui renvoie un objet de type Photo.
Lorsqu'elle est appelée, elle doit afficher
sur le logger, lors de l'entrée dans une méthode
le message enter method suivi du nom de la méthode,
et lors de la sortie de la méthode le message
exit method suivi du nom de la méthode.
Pour tester le proxy, changez le code de la méthode
createPhoto(File file) de sorte que, si l'on crée
la factory avec un logger, on utilise le proxy.
-
On souhaite écrire un proxy générique qui affiche les messages
d'entrée et de sortie quel que soit l'objet.
Pour cela nous allons utiliser la classe
java.lang.reflect.Proxy.
Écrivez une méthode createProxy() générique
et correctement typée créant un proxy générique.
-
Modifiez votre code pour que ne soient affichées que
les méthodes ayant l'annotation Log.
Exercice 2 - Prototype Pattern
Nous allons maintenant écrire un générateur de formes
en utilisant les classes
td4vignette.zip.
Les classes du paquetage
fr.umlv.gl.td4.vignette.factory
sont modifiables alors que celles de
fr.umlv.gl.td4.vignette
ne le sont pas.
-
Implantez la méthode create() de
la classe PrototypeVignetteFactory
en utilisant le design pattern prototype.
-
Écrivez un main permettant de créer
douze carrés rouges sur fond vert avec une épaisseur de trait de 3 pixels
et de les stocker dans douze fichiers PNG différents.
Puis ajoutez douze carrés roses sur fond vert avec une épaisseur de trait de 3 pixels.
Regardez pour cela la classe java.awt.geom.Rectangle2D.Double.
-
On souhaite pouvoir modifier des propriétés de la forme lors de
la création. Implantez la méthode create(Map...) de
la classe PrototypeVignetteFactory.
Pour cela, écrivez le type Properties de façon à ce que
le code n'utilise ni switch ni if.
Exercice 3 - State Pattern
Nous allons maintenant réécrire notre propre logger.
Téléchargez le squelette de la classe
Logger
td4log.zip.
-
Complétez la classe Logger en implantant
les méthodes warning(), info() et
debug().
N'implantez pas la méthode log pour l'instant.
-
On souhaite maintenant ne pas effectuer de if
mais déléguer au level le soin d'afficher ou non le
message en utilisant le design pattern State.
Réécrivez les méthodes warning(), info() et debug().
© Université de Marne-la-Vallée