next up previous
suivant: Mode d'emploi monter: Les catalogues de conception précédent: Les interfaces Homme-machine

Sous-sections

Les modèles de conception

Qu'est ce qu'un modèle de conception

Le nom de modèle
décrit en un ou deux mots un problème de conception.
Le problème
décrit les situations où le modèle s'applique.
La solution
décrit les éléments qui constituent la conception, les relations entre eux, leurs parts dans la solution, leur coopération.
Les conséquences
sont les effets résultants de la mise en \oe uvre du modèle et les variantes de compromis que celle-ci entraîne.

Catalogue et classification des modèles de conception

  Rôle
  Créateur Structurel Comportement
Domaine Classe Fabrication Adaptateur Interprète
        Patron de méthode
  Objet Fabrique abstraite Adaptateur Chaîne de responsabilité
    Monteur Pont Commande
    Prototype Composite Itérateur
    Singleton Décorateur Médiateur
      Façade Mémento
      Poids mouche Observateur
      Procuration État
        Stratégie
        Visiteur

Description des modèles de conception

Noms de modèle et classification
...
Intention
...
Alias
...
Motivation
...
Indications d'utilisation
...
Structure
...
Constituants
...
Collaborations
...
Conséquences
...
Implémentation
...
Exemples de code
...
Utilisations remarquables
...
Modèles apparentés
...

Les modèles créateurs

Ils permettent de rendre un système indépendant de la façon dont ses objets ont été créés, combinés et concrétisés.

Ils encapsulent la connaissance des classes concrètes que le système utilise, de sorte que tout ce que le système connaît de ces objets, est leurs interfaces, telles que définies par des classes abstraites.

Un exemple : un labyrinthe

Cette documentation (la hiérarchie des classes) est celle d'une première implémentation pour la création d'un labyrinthe.

La fabrique abstraite

Intention
La fabrique abstraite fournit une interface, pour créer des familles d'objets apparentés ou dépendants, sans avoir à spécifier leurs classes concrètes.

Exemples de code
la hiérarchie des classes.

Le monteur

Intention
Le monteur dissocie, dans un objet complexe, sa construction de sa représentation, de sorte que, le même procédé de construction puisse engendrer des représentations différentes.

Exemples de code
la hiérarchie des classes.

Les modèles structuraux

Ils étudient la façon de composer des classes et des objets pour réaliser des structures plus importantes. Les modèles de classes structurelles utilisent l'héritage pour composer interfaces et implémentations. Les modèles objets structuraux décrivent les moyens de composer des objets pour réaliser de nouvelles fonctionnalités.

L'adaptateur

Intention
convertit l'interface d'une classe en une autre conforme à l'attente du client. L'adaptateur permet à des classes de collaborer, qui n'auraient pu le faire du fait d'interfaces incompatibles.

Un exemple de code
Deux applications dont une propriétaire que l'on ne peut modifier. De même il n'est pas souhaitable de modifier profondément notre application pour qu'elle puisse utiliser directement l'application propriétaire.

Une application cherche à utiliser les fonctionnalités d'une autre, alors que ses interfaces sont déjà établies. La documentation et les sources.

Exemples de code avec l'adaptateur de classe
Une version avec le modèle Adaptateur de classes.

Exemples de code avec l'adaptateur d'objet
Une version avec le modèle Adaptateur d'objets.

Les modèles comportementaux

L'état

Intention
L'état permet à un objet de modifier son comportement, quand son état interne change. Tout se passera comme si l'objet changeait de classe.

Exemples de code
Un contrôleur pour simuler les états d'un processus dans un système d'exploitation.

Trois hiérarchies de classes possibles :
La version sans le modèle état.
Une première version avec le modèle état.
Une deuxième version avec le modèle état.

L'observateur

Intention
définit une interdépendance de type un à plusieurs, de façon telle que, quand un objet change d'état, tous ceux qui en dépendant en soient notifiés automatiquement et mis à jour.

Un exemple de code
Une pyramide est posée sur un parallelipipède. On s'interresse au volume global, ainsi qu'aux surfaces des trois projections suivant les trois axes. L'utilisateur peut à tout instant changer les points qui définissent la pyramide et le parallelipipède.

Une pyramide sur un parallelipipède.

Résumé

Fabrique Abstraite
fournit une interface, pour créer des familles d'objets apparentés ou dépendants, sans avoir à spécifier leurs classes concrètes.
Adaptateur
convertit l'interface d'une classe en une autre conforme à l'attente du client. L'adaptateur permet à des classes de collaborer, qui n'auraient pu le faire du fait d'interfaces incompatibles.
Pont
découple une abstraction de son implémentation afin que les deux éléments puissent être modifiés indépendamment l'un de l'autre.
Monteur
dissocie, dans un objet complexe, sa construction de sa représentation, de sorte que, le même procédé de construction puisse engendrer des représentations différentes.
Chaîne de responsabilité
d'une part évite le couplage de l'émetteur d'une requête à ses récepteurs, en donnant à plus d'un objet la possibilité d'entreprendre la requête; d'autre part chaîne les objets récepteurs et fait passer la requête tout au long de la chaîne, jusqu'à ce qu'un objet la traite.
Commande
encapsule une requête comme un objet, autorisant ainsi le paramétrage des clients par différentes requêtes, files d'attente et récapitulatifs de requêtes, et de plus, permettant la réversion des opérations.
Composite
compose des objets en des structures arborescentes pour représenter des hiérarchies composant/composé. Il permet au client de traiter de la même et unique façon les objets individuels et les combinaisons de ceux-ci.
Décorateur
attache dynamiquement des responsabilités supplémentaires à un objet. Les décorateurs fournissent une alternative souple à la dérivation, pour étendre les fonctionnalités.
Façade
fournit une interface unifiée, à l'ensemble des interfaces d'un sous-systèmes. La façade fournit une interface de plus haut niveau, qui rend le sous-systèmes plus facile à utiliser.
Fabrication
définit une interface pour la création d'un objet, tout en laissant à des sous-classes le choix de la classe à instancier. Une fabrication permet de déférer à des sous-classes les instanciations d'une classe.
Poids Mouche
utilise une technique de partage qui permet la mise en \oe uvre efficace d'un grand nombre d'objets de fine granularité.
Interpréteur
définit, pour un langage donné, une représentation de sa grammaire, en même temps qu'un interpréteur utilisant cette représentation pour interpréter les phrases du langage.
Itérateur
fournit un moyen d'accès séquentiel, aux éléments d'un agrégat d'objets, sans mettre à découvert la représentation interne de celui-ci.
Médiateur
définit un objet qui encapsule les modalités d'interaction d'un certain ensemble d'objets. Le médiateur favorise le couplage faible en dispensant les objets de se faire explicitement référence, et il permet donc de faire varier indépendamment les relations d'interaction.
Mémento
saisi et transmet à l'extérieur d'un objet, sans violation de l'encapsulation, l'état interne de celui-ci, dans le but de pouvoir ultérieurement le restaurer dans cet état.
Observateur
définit une interdépendance de type un à plusieurs, de façon telle que, quand un objet change d'état, tous ceux qui en dépendant en soient notifiés automatiquement et mis à jour.
Prototype
spécifie les espèces d'objets à créer, en utilisant une instance de type prototype, et crée de nouveaux objets par copies de ce prototype.
Procuration
fournit à un tiers objet un mandataire ou un remplaçant, pour contrôler l'accès à cet objet.
Singleton
garantit qu'une classe n'a qu'une seule instance, et fournit à celle-ci, un point d'accès de type global.
État
permet à un objet de modifier son comportement, quand son état interne change. Tout se passera comme si l'objet changeait de classe.
Stratégie
définit une famille d'algorithmes, encapsule chacun d'entre eux, et les rend interchangeables. Le modèle stratégie permet aux algorithmes d'évoluer indépendamment des clients qui les utilisent.
Patron de méthode
définit, dans une opération, le squelette d'un algorithme, en en déléguant certaines étapes à des sous-classes. Le patron de méthode permet de redéfinir par des sous-classes, certaines parties d'un algorithme, sans avoir à modifier la structure de ce dernier.
Visiteur
fait la représentation d'une opération applicable aux éléments d'une structure d'objet. Il permet de définir une nouvelle opération, sans qu'il soit nécessaire de modifier la classe des éléments sur lesquels elle agit.


next up previous
suivant: Mode d'emploi monter: Les catalogues de conception précédent: Les interfaces Homme-machine
Alain GRIFFAULT
2000-10-30