Quelqu'un a déjà utilisé le Pont de Modèle dans une application du monde réel? Si oui, comment avez-vous l'utiliser? Est-ce moi, ou est-ce juste l'Adaptateur Modèle avec une petite dépendance injection jeté dans le mélange? Est-il vraiment mériter son propre modèle?
Réponses
Trop de publicités?Il y a une combinaison de Federico de la et Jean les réponses.
Quand:
----Shape---
/ \
Rectangle Circle
/ \ / \
BlueRectangle RedRectangle BlueCircle RedCircle
Refactoriser:
----Shape--- Color
/ \ / \
Rectangle(Color) Circle(Color) Blue Red
Le Pont motif est une application de l'ancien conseil, préférez la composition au cours de l'héritage". Il devient utile lorsque vous devez sous-classe des moments différents, dans des façons qui sont orthogonaux l'un à l'autre. Dire que vous devez mettre en œuvre une hiérarchie de formes colorées. Vous n'auriez pas sous-classe de la Forme avec le Rectangle et le Cercle, et de la sous-classe Rectangle avec RedRectangle, BlueRectangle et GreenRectangle et de même pour le Cercle, le feriez-vous? Vous préférez-à-dire qu'à chaque Forme a une Couleur et à mettre en œuvre une hiérarchie des couleurs, et c'est le Pont de Modèle. Eh bien, je ne voudrais pas mettre en œuvre une "hiérarchie des couleurs", mais vous voyez l'idée...
Un exemple classique de le Pont motif est utilisé dans la définition des formes dans l'INTERFACE utilisateur de l'environnement (voir le Pont modèle de Wikipedia (en anglais). Le Pont motif est un composite du Modèle et de la Stratégie de modèles.
C'est un point de vue commun de certains aspects de l'Adaptateur dans le Pont de modèle. Cependant, pour citer le présent article:
À première vue, le Pont de modèle ressemble beaucoup au motif Adaptateur dans une classe est utilisée pour convertir en une sorte d'interface à l'autre. Cependant, l'intention de l'Adaptateur est de faire une ou plusieurs classes, les interfaces de regarder la même que celle d'une classe particulière. Le Pont motif est conçu pour séparer une classe de l'interface à partir de sa mise en œuvre, de sorte que vous pouvez modifier ou de remplacer l'application sans modifier le code du client.
L'adaptateur et le Pont sont certainement liés, et la distinction est subtile. Il est probable que certaines personnes qui pensent qu'ils sont à l'aide de l'un de ces modèles sont en fait à l'aide de l'autre modèle.
L'explication que j'ai vu, c'est que l'Adaptateur est utilisé lorsque vous essayez d'unifier les interfaces de certaines incompatible classes qui existent déjà. La Carte fonctionne comme une sorte de traducteur à des implémentations qui pourrait être considéré comme héritage.
Alors que le Pont motif est utilisée pour le code qui est plus susceptible d'être greenfield. Vous êtes à la conception du Pont de fournir une interface abstraite pour une mise en œuvre qui doit varier, mais vous pouvez également définir l'interface de ces classes d'implémentation.
Pilotes de périphérique est souvent citée comme un exemple de Pont, mais je dirais que c'est un Pont si vous êtes à la définition de l'interface de spécification pour les fournisseurs d'appareils, mais c'est un Adaptateur si vous prenez des pilotes de périphériques existants et de faire un wrapper-classe afin de fournir une interface unifiée.
Donc le code-sage, les deux modèles sont très similaires. Entreprise sages, ils sont différents.
Voir aussi http://c2.com/cgi/wiki?BridgePattern