Vous êtes sur la page 1sur 13

TICSEINFO2 Pr.

Radia Belkeziz
Matière : Composants et
patrons

Les patterns comportementaux


I. Iterator
Le pattern Iterator est un patron de conception qui permet efficacement de parcourir une collection
d'objets sans exposer sa représentation sous-jacente. Il offre une méthode uniforme pour accéder de
façon séquentielle aux éléments d'une collection sans connaître sa structure interne.

Diagramme UML :

- Iterator (Itérateur) : Interface définissant les méthodes permettant de parcourir les éléments
de la collection. Elle déclare des méthodes comme hasNext(), next(), remove(), permettant de
parcourir les éléments de la collection.
- ConcreteIterator (Itérateur Concret) : Implémentation concrète de l'interface Iterator, offrant
les méthodes spécifiques pour parcourir une collection.
- Aggregate (Agrégat) : Interface définissant une méthode pour créer un itérateur : elle déclare
une méthode createIterator() pour retourner un objet Itérateur.
- ConcreteAggregate (Agrégat Concret) : Implémentation concrète de l'interface Aggregate,
fournissant une méthode pour créer un itérateur sur la collection : elle fournit une
implémentation de createIterator() pour retourner un objet Itérateur spécifique pour la
collection.

Exemple : Supposons une collection de noms représentée par une interface Aggregate et un itérateur
pour parcourir ces noms.
NameCollection est un agrégat qui contient une collection de noms (String[] names).

La méthode createIterator() de l'agrégat NameCollection retourne un nouvel itérateur pour cette


collection.

II. Observer
C’est un patron de conception comportemental qui permet à un objet, appelé le sujet (subject), de
maintenir une liste de ses observateurs (observers) dépendant de lui, et de les informer
automatiquement de tout changement d'état, généralement en appelant une méthode sur chaque
observateur. Les observateurs peuvent s'attacher (s'inscrire) ou se détacher (se désinscrire) du sujet
pour recevoir ou arrêter de recevoir des notifications. Lorsque le sujet subit un changement d'état, il
notifie automatiquement tous les observateurs attachés en appelant une méthode spécifique sur
chacun d'eux.
Diagramme UML

- Sujet (Subject) : C'est l'objet central qui détient l'état et conserve une liste d'observateurs.
- Observateur (Observer) : Définit une interface pour les objets qui doivent être informés des
changements d'état du sujet.
- Observateur concret (Concrete Observer) : Implémente l'interface de l'observateur pour
recevoir les mises à jour du sujet.

Exemple : Imaginons un scénario de notification d'un blog où des utilisateurs s'abonnent pour recevoir
des mises à jour lorsqu'un nouvel article est publié.
III. State
C’est un patron de conception comportemental utilisé pour modéliser les états d'un objet et gérer ses
transitions d'état de manière propre et extensible. Le pattern State est utilisé lorsque l'objet peut
changer son comportement en fonction de son état interne. Plutôt que d'utiliser des instructions
conditionnelles pour gérer les différentes actions selon l'état, le pattern State définit une interface
pour chaque état possible de l'objet, encapsulant les comportements spécifiques à cet état.

Diagramme de classe

- Contexte : C'est l'objet dont l'état va changer. Il maintient une référence vers l'objet State
actuel.
- State : Interface ou classe abstraite décrivant les méthodes que chaque état concret devrait
implémenter.
- ConcreteState : Implémentation concrète de l'état spécifique, implémentant les
comportements associés à cet état.
- Client : Utilise le contexte pour interagir avec l'objet et gérer les transitions d'état.

Fonctionnement :

- Définition des états :


Chaque état possible de l'objet est modélisé en implémentant une classe représentant cet état,
souvent via une interface commune.
- Implémentation des comportements :
Chaque état concret implémente les comportements spécifiques associés à cet état dans les
méthodes définies par l'interface State.
- Gestion des transitions d'état :
Le contexte maintient une référence vers l'objet State actuel et peut changer cet état vers un autre,
déclenchant ainsi le changement de comportement.
- Utilisation du pattern :
Le client interagit principalement avec le contexte, qui, à son tour, délègue les appels de méthode
à l'objet State actuel.

Exemple : On imagine une lampe, qui peut être allumée ou éteinte.


IV. Strategy
C’est un patron comportemental permettant de définir une famille d'algorithmes, encapsuler chacun
d'eux et les rendre interchangeables. Cela permet à un algorithme de varier indépendamment des
clients qui l'utilisent. Il propose de prendre une classe dotée d’un comportement spécifique mais qui
l’exécute de différentes façons, et de décomposer ses algorithmes en classes séparées
appelées stratégies. La classe originale (le contexte) doit avoir un attribut qui garde une référence vers
une des stratégies.
Diagramme de classe

- Contexte : Classe qui contient une référence vers une stratégie et utilise cette stratégie pour
exécuter un algorithme spécifique.
- Stratégie (Interface/Classe abstraite) : Interface ou classe abstraite définissant le contrat pour
toutes les stratégies concrètes. Chaque stratégie représente un algorithme spécifique.
- Stratégies concrètes : Implémentations spécifiques des algorithmes définis dans l'interface de
stratégie.

Exemple : Imaginons un exemple basé sur différents modes de déplacement (marche, course, vélo,
voiture).
V. Memento
C’est un patron de conception comportemental qui permet de sauvegarder et de rétablir l’état
précédent d’un objet sans révéler les détails de son implémentation. Ce patron propose de stocker la
copie de l’état de l’objet dans un objet spécial appelé mémento. Son contenu n’est accessible que pour
l’objet qui l’a créé. Les autres objets peuvent communiquer avec les mémentos via une interface
limitée qui leur permet de récupérer certaines informations mais pas l’état de l’objet.

Diagramme de classe

- Originator (Créateur) : C'est l'objet dont l'état doit être sauvegardé. Il crée un Memento
contenant une copie de son état interne et peut utiliser ce Memento pour restaurer son état
ultérieurement.
- Memento (Sauvegarde) : C'est l'objet qui représente l'état sauvegardé de l'Originator. Il ne
permet que la lecture de l'état qu'il encapsule. Il peut contenir différents états précédents de
l'Originator.
- CareTaker (Gardien) : C'est l'objet responsable de stocker et de gérer les Mementos. Il
n'accède pas directement aux données encapsulées dans le Memento, mais peut les stocker,
les récupérer et les fournir à l'Originator si nécessaire pour restaurer son état.

Exemple : Imaginons un scénario où un éditeur de texte peut sauvegarder des versions antérieures de
son contenu et restaurer ces versions si nécessaire.

Vous aimerez peut-être aussi