Sémantique. De wikipedia :
Le diagramme de classes UML pour le modèle de stratégie est le même que le diagramme pour le modèle de pont. Cependant, ces deux modèles de conception ne sont pas les mêmes dans leur intention. Alors que le modèle de stratégie est destiné au comportement, le modèle de pont est destiné à la structure.
Le couplage entre le contexte et les stratégies est plus étroit que le couplage entre l'abstraction et l'implémentation dans le pattern Bridge.
Si je comprends bien, vous utilisez le modèle de stratégie lorsque vous faites abstraction d'un comportement qui pourrait être fourni à partir d'une source externe (par exemple, config pourrait spécifier de charger un assemblage de plug-in), et vous utilisez le modèle de pont lorsque vous utilisez les mêmes constructions pour rendre votre code un peu plus net. Le code réel sera très similaire - vous appliquez simplement les modèles pour des raisons légèrement différentes .
Le modèle Bridge est un modèle structurel (COMMENT CONSTRUIRE UN COMPOSANT LOGICIEL?). Le modèle de stratégie est un modèle dynamique (COMMENT VOULEZ-VOUS EXÉCUTER UN COMPORTEMENT DANS UN LOGICIEL?).
La syntaxe est similaire mais les objectifs sont différents:
la source
Stratégie:
L'intention est la capacité à permuter le comportement au moment de l'exécution
Pont
L'intention est de découpler complètement l'abstraction de l'implémentation
la source
Je pensais la même chose, mais récemment, j'ai dû utiliser bridge et j'ai réalisé que bridge utilise la stratégie et ajoute de l'abstraction au contexte afin que vous puissiez plus tard faire plus de changements sans changer le client. Lors de l'utilisation de Strategy sans l'abstraction, la conception n'est pas aussi flexible et peut nécessiter des modifications ultérieures du client. Mais lors de l'utilisation de l'ensemble du pont, la conception devient encore plus flexible. Ici, vous pouvez voir comment passer de la stratégie au pont donne plus de flexibilité. Nous supposons également que maintenant "visa" et "master" ne sont pas seulement disponibles sur les cartes mais aussi sur les téléphones et les puces; et si nous utilisons bridge, il est beaucoup plus facile d'ajouter ce support.
la source
Pont : (Un modèle structurel)
Le modèle de pont dissocie l'abstraction et la mise en œuvre et permet aux deux de varier indépendamment.
Utilisez ce modèle lorsque:
Stratégie: (modèle comportemental)
Les modèles de stratégie vous permettent de basculer entre plusieurs algorithmes d'une famille d'algorithmes au moment de l'exécution.
Utilisez le modèle de stratégie lorsque:
Articles Similaires:
Quand utilisez-vous le modèle de pont? En quoi est-ce différent du modèle d'adaptateur?
Exemple du monde réel du modèle de stratégie
la source
Types de modèles de conception
Pont (structurel)
Prenez une télécommande. La télécommande a des boutons 1-6. C'est la classe concrète dans le diagramme ci-dessus. Chaque bouton fonctionnera différemment selon que la télécommande est utilisée pour un téléviseur ou un DVD. La fonctionnalité de chaque bouton est extraite de l'implémentation par l'interface d'implémentation.
Cela nous permet de modifier le fonctionnement de la télécommande pour chaque appareil.
Stratégie (comportementale)
En stratégie, si nous regardions le scénario distant. L '"état" est la totalité de la télécommande que nous échangeons en changeant la référence d'état du contexte. Le "concretStateA" (télécommande TV) "concretStateB" (télécommande DVD).
Lecture supplémentaire:
la source
Le modèle de stratégie est utilisé pour les décisions comportementales, tandis que le modèle de pont est utilisé pour les décisions structurelles.
Brigde Pattern sépare les éléments abstraits des détails d'implémentation, tandis que Strategy Pattern vise à rendre les algorithmes plus interchangeables.
Modèle de stratégie dans UML
Motif de Brigde dans UML
Modèle de stratégie dans Swift:
Motif de Brigde dans Swift:
la source
Stereo
avecTV
et le code fonctionne.Ajoutant à la réponse de willcodejavaforfood, ils peuvent être les mêmes, dans la mise en œuvre. Cependant, vous utilisez une stratégie pour échanger des stratégies telles que la stratégie de tri, tandis que vous utilisez bridge pour relier les implémentations de deux objets, par exemple un wrapper de base de données et une carte réseau afin que le code client puisse utiliser l'un ou l'autre fonctionnant avec la même API. Donc le nom dit tout
la source
Depuis le wiki sur le modèle de stratégie
la source
Juste pour ajouter à ce qui a déjà été dit à propos de la comparaison de modèles (différence d'intention, ...): le modèle Bridge est également intentionnellement structuré pour permettre au côté hiérarchie d'abstraction de varier. Dans des langages comme C #, cela pourrait impliquer que vous ayez une base d'abstraction contenant des méthodes virtuelles afin d'autoriser les variations voulues qui ne causent pas de problèmes aux consommateurs existants. À part cela, les deux modèles peuvent sembler identiques pour la plupart.
la source
Le modèle de stratégie est utilisé lorsque vous souhaitez connecter un algorithme ou une stratégie au moment de l'exécution. En tant que catégorie de motif, cela implique également qu'il traite du comportement des objets. D'autre part, le pont est un modèle structurel et traite de la hiérarchie structurelle des objets. Il dissocie l'abstraction de l'implémentation en introduisant une abstraction raffinée entre elles. L'abstraction raffinée peut être confondue avec la stratégie d'exécution branchée (modèle In Strategy). Le modèle de pont traite les aspects structurels en fournissant un mécanisme pour éviter de créer un nombre n de classes.
la source
Pour le modèle de stratégie, seule la mise en œuvre varie.
Supposons que la classe A utilise la classe B qui a plusieurs implémentations disponibles. Donc, dans ce cas, B serait abstrait avec une implémentation réelle fournie au moment de l'exécution. C'est un modèle de stratégie
Maintenant, si A lui-même est abstrait. Les deux A et B peuvent varier. Vous utiliseriez le modèle Bridge.
la source
Je pense qu'il y a une légère différence entre eux dans le contexte dans lequel ils sont utilisés.
J'utilise le modèle Bridge pour séparer les concepts orthogonaux dont ils appartiennent tous les deux à un plus grand - pour les laisser varier indépendamment. Cela implique généralement plusieurs abstractions.
OMI, le modèle de stratégie est plus simple ou plus plat. Cela sert à coup sûr à OCP mais ne fait pas nécessairement partie d'un autre concept plus grand comme le modèle Bridge.
la source