Professional Documents
Culture Documents
• Intention :
– Définir une dépendance un<->plusieurs entre des
objets de façon à que lorsqu’un objet change
d’état, tout ses dépendants soient notifiés et mis à
jour automatiquement.
• Aussi connu sous le nom de
– Dépendants ou de Publication/Inscription
• Motivation :
– La nécessité de maintenir la consistance entre des objets
reliés sans pour autant trop coupler les classes.
Le patron observateur
• Motivation :
trois observateurs
sujet observé
Le patron observateur
• Applicabilité :
Utiliser ce patron dans les situations suivantes :
– Quand une abstraction a deux aspect, l’un
dépendant de l’autre. Les encapsuler dans des
objets séparés permet de les varier et de les
réutiliser indépendamment l’un de l’autre
– Quand le changement d’un objet demande le
changement d’autres objets
– Quand un objet doit notifier d’autres objets sans
faire d’hypothèse sur la nature de ces autres
objets.
Le patron observateur
• Structure :
Structure du patron
observateur
• Participants :
– Le sujet :
• Garde une trace de ses observateurs
• Propose une interface pour ajouter ou
enlever des observateurs
– L’observateur :
• Définit une interface pour la notification
de mises à jour
Structure du patron
observateur
– Le sujet concrêt :
• C’est l’objet observé
• Enregistre son état intéressant les observateurs
• Envoie une notification à ces observateurs quand il
change d’état
– L’observateur concrêt :
• Il observe l’objet cconrêt
• Il stocke l’état qui doit rester consistent avec celui de
l’objet observé
• Il implémente l’interface de mise à jour permettant à son
état de rester consistent avec celui de l’objet observé
Diagramme temporel pour le
patron observateur
• Collaboration
Le patron observateur
• Conséquences :
Bénéfices :
– Couplage minimal entre le sujet et l’observateur
– On peut réutiliser les sujets sans leurs
observateurs et vice-versa
– Tout ce que le sujet connaît c’est la liste de ses
observateurs
– Le sujet n’a pas besoin de connaître la classe
concrête de ses observateurs
– Des observateurs peuvent être ajoutés/enlevés
dynamiquement (à n’importe quel moment)
Ecriture en java du patron de conception
Observateur
•L’interface java.util.Observer est l’interface qui doit être implémentée par les
classes qui veulent être des observateurs.
La classe java.util.Observable
• public Observable()
– Construit un objet observable avec initialement 0 observateurs