Vous êtes sur la page 1sur 28

Introduction et définition

Objectifs, Avantages et inconvénients

Les types de patrons

Plan Patron Comportemental: Iterator

Patron Créationnel: Singleton

Patron Structurel: Adapter

Conclusion
1
 Depuis l’ apparition des patrons de conception , on lui a
suscité beaucoup d’intérêts.

Introduction  Certaines études se sont concentrées sur la


classification, la comparaison et la mise en œuvre des
patrons, d’autres ont essayé de spécifier formellement
les patrons et/ou leur application.

2
 Un patron décrit un problème devant être résolu, une
solution, et le contexte dans lequel cette solution est
considérée.
Définition  Il nomme une technique et décrit ses coûts et ses
avantages.
 Il permet à une équipe d’utiliser un vocabulaire
commun pour décrire leurs modèles » [Johnson 1997].

3
 Un patron décrit et nomme une solution à un problème
commun
 Offre une solution abstraite pour faciliter la réutilisation
 Est formule en termes de classes et objets
 Peut être implémenté différemment en fonction du
langage de programmation utilisé
 Solution générale à un problème courant en
conception logicielle
 Indépendant du langage de programmation et du
paradigme
 Offre la possibilité de combiner des patterns

4
 Les patrons visent en général à accroitre la qualité du
code en visant un ou plusieurs des objectifs suivant
 Flexibilité accrue
 Meilleure performance
Objectifs  Amélioration de l’efficacité, la robustesse, le temps
de développement, la lisibilité du code

5
 Avantages
 Vocabulaire formalisé
 Capitalisation de l’expérience
 Niveau d’abstraction élevé ;
Avantages &  Complexité réduite ;
Inconvénients  Temps de conception et développement réduit ;
 Guide/catalogue de solutions.

6
 Inconvénients
 Synthèse nécessaire :
 Comment reconnaitre une situation où un patron
s’applique ?
 Apprentissage :
Avantages &  Catalogue volumineux : plus de 150 patrons
Inconvénients répertoriés
 Différents niveaux : des patrons de patrons.
 Disparition du patron lors de son utilisation :
Adaptation du patron à son contexte

7
 Les patrons créationnels :
 Instanciation et configuration des classes et objets.

Les types de  Les patrons structuraux


patrons  Organisation des classes dans une structure plus large.
 Les patrons comportementaux
 Décrivent les modèles de communication et interaction entre
les objets,

8
Création Structure Comportement

Abstract Factory Adapter Chain of


responsability
Builder Bridge Command

Factory Method Composite Interpreter

Prototype Decorator Iterator


Les 23 patrons Singleton Facade Mediator

Flyweight Memento

Proxy Observer

State

Strategy

Template Method

Visitor
9
 Le problème que permet de résoudre le patron Iterator:
 L’accès séquentiel au éléments d’un groupe sans exposer
la représentation interne
 Le support de plusieurs types d’accès
Patron  Le support des accès concurrents7
Comportemental:
Iterator  Utilisation :
 avec les structures d’arbres, de listes chainées, de tables de
hachage, et parfois aussi les tableaux

10
 Architecture de la solution

 Les entités participantes:


 Iterator
 Définit une interface pour accéder et voyager
parmi les éléments
 ConcreteIterator
 Réalise l’interface Iterator
 Conserve sa position courante dans la
collection d’objets
 Aggregate
 Définit une interface pour créer un objet de
type Iterator
 ConcreteAggregate
 Réalise l’interface de collection pour retourner
une instance de concreteIterator adaptée à la
collection

11
 Exemples d’utilisation:
 Classes de base en C++
 Utilisée pour parcourir les classes issues de la
STL (Standard Template Library): vector, map,
queue, list
 Interface présente en java dans le paquetage
java.util
 Sert à parcourir les classes collection, Map,
HashTable,etc

12
 Avantages
 Découple les algorithmes de parcours des collections qui
contiennent les éléments
 Inconvénients
 Mène parfois à une violation du principe d’encapsulation et
expose les structures et les algorithmes de parcours à des
effets de bord non sollicités

13
Exemple -
Iterator:

14
 Le problème que permet de résoudre le patron
Singleton:
 S’assurer qu’une classe possède une seule instance
(facilement accessible)
Patron
 Utilisation:
créationnel :  Dans tous les cas où une seule instance de la classe est
Singleton nécessaire
 Pour contrôler l’accès à une ressource partagée (connexion à
une BD)

15
 Solution
 Assurer une instance unique en cachant le
mécanisme de création (constructeur privé en
java)
 Garder une référence pour l’instance unique
(attribut statique privé)
 Créer un point d’accès publique (une méthode qui
retourne l’instance unique)

16
 Architecture de la solution :

 Les entités participantes:


 Emploie un constructeur à visibilité privée
 Possède un attribut de classe de type singleton
 Donne accès à ce dernier via getinsatnce

17
 Exemple d’utilisation ; utilisé à trois reprises dans l’API
java:
 Classe Runtime donnant accès, pour l’application,
à son environnement d’exécution

 Classe Desktop pour lancer des actions liées au


bureau (interface graphique) dans lequel
l’application est lancé

 Classe toolkit qui lie les widgets java et leur


implémentation native dans le système
d’exploitation

18
 Avantages:
 Facile à mettre en œuvre
 Adapté pour certaines classes de test unitaire

 Inconvénients
 Doit être implémenté avec précaution dans un
environement multi-threadé

19
Exemple -
Singleton:

20
 Le problème que permet de résoudre le patron
Adapter:
 Convertir l’interface d’une classe en une autre interface
 Attendue par le client afin de permettre à des classes
Patron incompatibles de travailler (motivé par la réutilisation de
code)
structurel :
Adapter  Utilisation :
 Lorsque l’on veut normaliser l’utilisation d’anciennes classes
sans pour autant les modifier ;
 Adaptation d’une API tiers dont la signature des opérations
ne convient pas.

21
Structure :

Les entités participantes:


 Iadaptateur(But)
 Définit l’interface ciblée par le client.
 Adapteur
 Adapte l’interface d’Adapté pour la rendre
compatible avec celle de IAdaptateur.
 Adapté
 Définit une interface existante devant etre
adaptée
 Client
 collabore avec les objets qui sont conformes à
l’interface de IAdaptateur .

22
Version classes du modèle Adaptateur
 Un adaptateur de classes utilise l'héritage multiple pour
adapter une interface à une autre :

Implémentation

23
Version objets du modèle Adaptateur
 Un adaptateur d'objet repose sur la composition
d'objets:

Implémentation

24
Un éditeur de dessin permettant à l'utilisateur de
tracer et de combiner des éléments graphiques (lignes,
polygones, textes, etc.)sous forme d'images et de
diagrammes. Le concept de base d'un éditeur de dessin
Exemple est l'objet graphique dont la forme peut être éditée et
qui peut se dessiner lui-même.

25
Exemple

26
 Avantage
 Permet d’intégrer des objets existants dans de nouvelles
structures de classes sans être limité par leur interface.
 Inconvénients
 Surcout en taille de code et en temps de calcul du `a l’appel
des opérations intermédiaires.

27
 On peut s’ouvrir sur les anti-patrons:
 Extension naturelle de patrons de conception
 S’intéressent `a la problématique du refactoring :
Conclusion  Décrivent des symptômes (dysfonctionnements)
 Indiquent la recette `a appliquer pour corriger l’application.
 Sont moins formalisés que les patrons de conception
 Sont au nombre d’une quarantaine.

28

Vous aimerez peut-être aussi