17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

510<br />

Techniques avancées<br />

QUATRIÈME PARTIE<br />

fenetre = Fenetre('fenetre 1')<br />

fenetre2 = Fenetre('fenetre 2')<br />

ob1 = ObservateurTitre(fenetre)<br />

ob2 = ObservateurContenu(fenetre)<br />

ob3 = ObservateurGlobal(fenetre)<br />

fenetre.changeTitre('nouveau titre')<br />

fenetre.changeContenu('nouveau contenu')<br />

fenetre2.changeTitre('nouveau titre2')<br />

Les événements peuvent être statiques à la classe, comme globalTitreEvent, ou spécifiques<br />

à chaque instance.<br />

Exécution du script<br />

[tziade@Tarek Desktop]$ python observers.py<br />

le titre a été changé en "nouveau titre" !<br />

le titre de "fenetre 1" a été changé en "nouveau titre" !<br />

le contenu a été changé en "nouveau contenu" !<br />

le titre de "fenetre 2" a été changé en "nouveau titre2" !<br />

D’autres variations sont possibles, notamment :<br />

proposer une implémentation de base de la classe observée, pour gérer des collections<br />

d’événements ;<br />

rendre les observateurs actifs, c’est-à-dire déclencher les événements avant que le<br />

code qui modifie l’état ne soit effectué, pour qu’ils puissent influer sur les paramètres<br />

d’exécution, ou même empêcher la suite de l’exécution ;<br />

donner la possibilité à un observateur de connaître les autres observateurs ;<br />

gérer des priorités dans l’ordre d’appel des observateurs ;<br />

etc.<br />

Memento<br />

Le DP Memento stipule que l’état d’un objet peut être sauvegardé à tout moment, et<br />

rechargé avec cette sauvegarde en cas de besoin. Cette mémoire permet de mettre en<br />

place du code transactionnel.<br />

L’exemple le plus commun de code transactionnel est l’exécution de requêtes de mise<br />

à jour d’une base de données relationnelle : en cas de problème, un retour en arrière<br />

(rollback) est possible, pour remettre la base dans l’état précédent le début de la mise à<br />

jour. En cas de succès, les modifications sont validées (commit).

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!