Identifiant :
Mot de passe :

Patrons de conception

Pont

Diagramme de classes :

Diagramme de classes

Description :

Type :  St  (Structurel)
Intention : 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.
Applicabilité : Utilisez le Pont lorsque :
- Vous souhaitez éviter un lien définitif entre une abstraction et son implémentation. Ce peut être le cas, par exemple, lorsque l'implémentation doit être choisie parmi plusieurs ou échangée avec une autre lors de l'exécution.
- Il faut que les abstractions et leurs implémentations puissent toutes deux être étendues par dérivation. Dans ce cas, le modèle du Pont permet de combiner les différentes abstractions et implémentations, et de les étendre indépendamment.
- Il ne faut pas que les modifications apportées à l'implémentation d'une abstraction aient un impact sur le code client (il ne doit pas avoir à être recompilé).
- (C++) Vous souhaitez cacher complètement au client, l'implémentation d'une abstraction. En C++, en effet, la représentation de la classe est visible dans l'interface de la classe.
- Vous êtes confrontés à une prolifération de classes. Ce type de hiérarchie de classes est typique des cas où il est nécessaire d'éclater un objet en deux parties. Rumbaugh utilise le terme de « généralisation imbriquée » (nested generalization), pour faire référence à de telles hiérarchies de classes.
- Vous voulez faire partager une même implémentation à plusieurs objets (en utilisant éventuellement un comptage des références), et que cela doive être caché au client. Un exemple simple est la classe String de Coplien, dans laquelle plusieurs objets peuvent partager la même représentation de chaîne de caractères (StringRep).

Points forts :

  1. 1. Extensibilité
    1. 1.1 L'ajout ou la suppression d'un implémenteur concret n'implique pas de modification de code
    2. 1.2 L'ajout ou la suppression d'une abstraction fine ne nécessite pas de modification de code
  2. 2. Découplage entre abstraction et implémenteur
    1. 2.1 Nombre minimal d'implémenteurs concrets
    2. 2.2 Factorisation maximale du lien entre abstraction et implémenteur

Participants au patron :

Patrons abîmés :

  1. 1. Développement du pont
  2. 2. Développement complet depuis <<Abstraction>>
  3. 3. Développement complet depuis <<Implémenteur>>

Problèmes :

  1. 1. Changement de plateforme d'affichage
Les têtes de mule
Cédric BOUHOURS
Cédric BOUHOURS
Cédric BOUHOURS