Académique Documents
Professionnel Documents
Culture Documents
Radia Belkeziz
Matière : Composants et
patrons
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).
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 :
- 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.