Observateur (patron de conception)

Observateur (patron de conception)
diagramme UML du patron de conception Observateur

Le patron de conception observateur/observable est utilisé en programmation pour envoyer un signal à des modules qui jouent le rôle d'observateur. En cas de notification, les observateurs effectuent alors l'action adéquate en fonction des informations qui parviennent depuis les modules qu'ils observent (les "observables").

Sommaire

Utilité

La notion d'observateur/observable permet de coupler des modules de façon à réduire les dépendances aux seuls phénomènes observés.

Utilisation

Dès que l'on a besoin de gérer des événements, quand une classe déclenche l'exécution d'une ou plusieurs autres.

Illustration

Prenons comme exemple une classe qui produit des signaux (données observables), visualisée à travers des panneaux (observateurs) d'une interface graphique. On souhaite que la mise à jour d'un signal modifie le panneau qui l'affiche. Afin d'éviter l'utilisation de thread ou encore d'inclure la notion de panneau dans les signaux il suffit d'utiliser le patron de conception observateur/observable.

Le principe est que chaque classe observable contient une liste d'observateurs, ainsi à l'aide d'une méthode de notification l'ensemble des observateurs est prévenu. La classe observée hérite de "Observable" qui gère la liste des observateurs. La classe Observateur est quant à elle purement abstraite, la fonction de mise à jour ne pouvant être définie que par une classe spécialisée.

Un exemple en langage Java

L'exemple ci-dessous montre comment utiliser l'API du langage Java qui propose des interfaces et des objets abstraits liées à ce patron de conception.

  • On crée une classe qui étend java.util.Observable et dont la méthode de mise à jour des données setData lance une notification des observateurs (1) :
class Signal extends Observable {
 
  void setData(byte[] lbData){
    setChanged(); // Positionne son indicateur de changement
    notifyObservers(); // (1) notification
  }
}
  • On crée le panneau d'affichage qui implémente l'interface java.util.Observer. Avec une méthode d'initialisation (2), on lui transmet le signal à observer (2). Lorsque le signal notifie une mise à jour, le panneau est redessiné (3).
class JPanelSignal extends JPanel implements Observer {
 
  void init(Signal lSigAObserver) {
    lSigAObserver.addObserver(this); // (2) ajout d'observateur
  }
 
  void update(Observable observable, Object objectConcerne) {
    repaint();  // (3) traitement de l'observation
  }
}

Un exemple en langage C++

Dans cet exemple en C++, on veut afficher les événements qui se produisent dans une classe Exemple.

Un exemple en langage C#

Tout comme Iterateur, Observateur est implémenté en C# par l'intermédiaire du mot clé event. La syntaxe a été simplifiée pour l'abonnement ou appel d'une méthode sur levée d'un événement. Un événement possède une signature : le type de la méthode que doit lever l'évènement. Dans cet exemple c'est EventHandler.

event EventHandler observable;

La signature du type délégué EventHandler est "void (object emetteur, EventArgs argument)".

Avec le langage ruby

La classe observable implémente le patron de conception observateur.

Un exemple avec le framework Ruby On Rails

Rails fournit un générateur pour ce patron de conception. Il s'utilise comme ceci:

/usr/local/projetsawd# script/generate observer essai
 exists  app/models/
 exists  test/unit/
 create  app/models/essai_observer.rb
 create  test/unit/essai_observer_test.rb



Wikimedia Foundation. 2010.

Contenu soumis à la licence CC-BY-SA. Source : Article Observateur (patron de conception) de Wikipédia en français (auteurs)

Игры ⚽ Поможем решить контрольную работу

Regardez d'autres dictionnaires:

  • Observateur (Motif de conception) — Observateur (patron de conception) Le patron de conception observateur/observable est utilisé en programmation pour envoyer un signal à des modules qui jouent le rôle d observateur. En cas de notification, les observateurs effectuent alors l… …   Wikipédia en Français

  • Observateur (motif de conception) — Observateur (patron de conception) Le patron de conception observateur/observable est utilisé en programmation pour envoyer un signal à des modules qui jouent le rôle d observateur. En cas de notification, les observateurs effectuent alors l… …   Wikipédia en Français

  • Patron de conception — Pour les articles homonymes, voir Patron. le patron Proxy En informatique, et plus particulièrement en développement logiciel, un patron de conception (en anglais  …   Wikipédia en Français

  • Patron de modélisation — Patron de conception Pour les articles homonymes, voir Patron. Un patron de conception (design pattern en anglais) est un concept de génie logiciel destiné à résoudre les problèmes récurrents suivant le paradigme objet. En français on utilise… …   Wikipédia en Français

  • Observateur — Cette page d’homonymie répertorie les différents sujets et articles partageant un même nom. Sur les autres projets Wikimedia : « Observateur », sur le Wiktionnaire (dictionnaire universel) Le Nouvel Observateur est un hebdomadaire… …   Wikipédia en Français

  • Modèle de conception — Patron de conception Pour les articles homonymes, voir Patron. Un patron de conception (design pattern en anglais) est un concept de génie logiciel destiné à résoudre les problèmes récurrents suivant le paradigme objet. En français on utilise… …   Wikipédia en Français

  • Modèles de conception — Patron de conception Pour les articles homonymes, voir Patron. Un patron de conception (design pattern en anglais) est un concept de génie logiciel destiné à résoudre les problèmes récurrents suivant le paradigme objet. En français on utilise… …   Wikipédia en Français

  • Motif de conception — Patron de conception Pour les articles homonymes, voir Patron. Un patron de conception (design pattern en anglais) est un concept de génie logiciel destiné à résoudre les problèmes récurrents suivant le paradigme objet. En français on utilise… …   Wikipédia en Français

  • Motifs de conception — Patron de conception Pour les articles homonymes, voir Patron. Un patron de conception (design pattern en anglais) est un concept de génie logiciel destiné à résoudre les problèmes récurrents suivant le paradigme objet. En français on utilise… …   Wikipédia en Français

  • Patrons de conception — Patron de conception Pour les articles homonymes, voir Patron. Un patron de conception (design pattern en anglais) est un concept de génie logiciel destiné à résoudre les problèmes récurrents suivant le paradigme objet. En français on utilise… …   Wikipédia en Français

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”