#!/bin/python # -*- coding: utf-8 -*- class Observed : #Créer un nouvel objet "Observed" def __init__ (self, name) : self._name = name self.listObservers = [] self.maVariable = "" return #On ajoute de nouveaux observateurs def addObserver (self, observer) : self.listObservers.append(observer) return #On peut aussi en supprimer.. def removeObserver (self, observer) : self.listObservers.remove(observer) return #Lors que ta variable va changer d'état on #appel cette fonction qui est chargé d'en #avertir les observateurs; On leur précise #que c'est cet objet qui a changé d'état.. def notifying (self) : for o in self.listObservers : o.stateChanged(self) return #Ici on change l'état de la variable def setVariable (self, newValue) : #Hop, la variable a changé d'état self.maVariable = newValue #On averti les autres ! self.notifying() return #On permet à l'utilisateur de récupérer la nouvelle valeur def getVariable (self) : return self.maVariable
#!/bin/python # -*- coding: utf-8 -*- class Observer : #Créer un nouvel objet observateur def __init__ (self, name) : self._name = name return #La fonction qui est appellée par l'observé lorsqu'il à changé.. def stateChanged (self, object) : newValue = object.getVariable() print(str(self._name) + " observing " + str(object._name) + " has detected a change : new value = " + str(newValue)) return #On s'ajoute parmis les observateurs de "object".. def observing (self, object) : object.addObserver(self) return
#!/bin/python # -*- coding: utf-8 -*- #On import les modules créer import Observer import Observed #code principal de l'application if __name__ == "__main__" : #On créer deux objets qui vont être observés observed1 = Observed.Observed("Observed1") observed2 = Observed.Observed("Observed2") #On créer deux observateurs observer1 = Observer.Observer("Observer1") observer2 = Observer.Observer("Observer2") #Le premier observateur doit observer "observed1" et "observed2" observer1.observing(observed1) observer1.observing(observed2) #Le deuxième observateur doit observer "observed2" observer2.observing(observed2) #On applique un nouvelle valeur aux variables de "observed1" et "observed2" observed1.setVariable("new 1 !") observed2.setVariable("new 2 !")