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). |