Pont (patron de conception)
# Pont (patron de conception)

Le pont est un patron de conception de la famille structuration, qui permet de découpler l'interface d'une classe et son implémentation.

La partie concrète (implémentation réelle) peut alors varier, indépendamment de celle abstraite (définition virtuelle), tant qu'elle respecte le contrat de réécriture associé qui les lie (obligation de se conformer aux signatures des fonctions/méthodes, et de leur fournir un corps physique d'implémentation).

## Remarque

Ce modèle de structuration de la logique s'illustre notamment dans de nombreuses technologies d'accès éloigné, de communication distante, et d'envoi de message. Il a trait aux techniques de dialogue, d'un point de vue bas niveau - on trouve par exemple : les procédures d'appels distants (RPC), ou les invocations de méthodes distantes (Java RMI) ; et concerne aussi globalement, à un plus haut niveau, les architectures distribuées tels que les ORB ou autres SOA.

## Attention

Ne pas confondre ce patron avec l'adaptateur, qui est utilisé pour adapter l'interface d'un type vers un autre type, et donc faire en sorte qu'une ou plusieurs classes intègrent un type issu d'une interface en particulier (étendant ainsi son périmètre de transtypage).

Le pont est lui utilisé pour séparer la définition de l'interface (appelée aussi stub, pour « souche » ou « talon ») de l'implémentation (appelée aussi skeleton, symbolisant le « squelette » du sens logique mis en œuvre). Vous pouvez donc, de la sorte, faire évoluer l'implémentation concrète d'une classe sans devoir modifier l'appel effectué par la partie cliente, qui se réfère alors aux signatures de fonctions/méthodes de cette interface (elle-même invariante).

## Exemple en Eiffel

Exemple écrit en Eiffel.

## Exemple en Java

Exemple écrit en Java, et utilisant les bibliothèques Java RMI.

Fichier bridge/Stub.java :

Fichier bridge/Skeleton.java:

