17.12.2012 Views

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

Programmation PYTHON - Zenk - Security - Repository

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

500<br />

Techniques avancées<br />

QUATRIÈME PARTIE<br />

Design patterns orientés objet<br />

Le concept de design pattern orienté objet a émergé avec les travaux de Gamma,<br />

Helm, Johnson et Vlissides (appelés Gang of Four, ou GoF). Leur ouvrage, Design<br />

Patterns : Elements of Reusable Object-Oriented Software (Addison Wesley, 1995),<br />

regroupe des solutions à des problèmes récurrents de programmation.<br />

Un pattern, selon le GoF, doit :<br />

porter un nom unique ;<br />

proposer une solution à un problème clairement énoncé ;<br />

décrire précisément les relations entre chaque acteur ;<br />

déterminer les conséquences de son utilisation.<br />

En phase d’analyse, ce vocabulaire commun entre tous les développeurs permet de<br />

décrire et concevoir la structure d’un programme objet de manière très précise. On<br />

parle alors de Visitor, Mediator ou autre Factory.<br />

Conçus à l’origine pour le C++, les design patterns (que nous nommerons parfois DP<br />

par commodité dans la suite de chapitre) du GoF s’appliquent avec plus ou moins de<br />

facilité et de bonheur dans les autres langages.<br />

L’objectif de cette section est de présenter les DP dans le contexte de Python et de<br />

proposer des implémentations avec les new-style classes.<br />

Le GoF a regroupé les design patterns en plusieurs ensembles :<br />

les patterns de génération d’objets : composants en charge de créer de manière<br />

contrôlée des objets ou structures d’objets ;<br />

les patterns fonctionnels : composants en charge d’implémenter un mode<br />

d’exécution ;<br />

les patterns structurels : composants en charge d’organiser les relations entre plusieurs<br />

classes, pour constituer une structure coopérative.<br />

Patterns de génération d’objets<br />

Lorsqu’un programme doit instancier un objet, la manière la plus simple est<br />

d’appeler le constructeur d’une classe. Les patterns de génération d’objets fournissent<br />

des outils de plus haut niveau pour contrôler ces créations.<br />

Le code utilisateur ne s’adresse plus directement aux classes mais emploie les services<br />

de ces patterns, sauf lorsque ces outils sont implémentés de manière transparente.<br />

Les patterns les plus communs de cet ensemble sont :<br />

Le pattern Singleton qui permet de s’assurer qu’un type de classe ne peut être instancié<br />

qu’une seule fois dans un programme. Une variation est le pattern Borg,

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

Saved successfully!

Ooh no, something went wrong!