首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >桥接模式和策略模式有什么不同?

桥接模式和策略模式有什么不同?
EN

Stack Overflow用户
提问于 2009-01-21 09:09:14
回答 13查看 43.5K关注 0票数 127

我试着阅读了很多关于dofactory、维基百科和许多网站的文章。我不知道桥模式和策略模式之间的区别。

我知道它们都将抽象从实现中解耦出来,并且可以在运行时更改实现。

但是我仍然不知道在哪种情况下我应该使用策略,或者在哪种情况下我应该使用桥接。

EN

回答 13

Stack Overflow用户

回答已采纳

发布于 2009-01-21 09:18:51

语义学。来自wikipedia

策略模式的UML类图与桥模式的图相同。然而,这两种设计模式的意图并不相同。虽然策略模式适用于行为,而桥接模式适用于结构。

上下文和策略之间的耦合比桥模式中抽象和实现之间的耦合更紧密。

据我所知,当您抽象可以从外部来源提供的行为时,您正在使用策略模式。config可以指定加载一些插件程序集),当您使用相同的构造来使您的代码更整洁时,您将使用桥模式。实际的代码将看起来非常相似--您只是将这些模式应用于,原因与略有不同。

票数 73
EN

Stack Overflow用户

发布于 2009-01-21 13:34:25

Bridge模式是一种结构模式(如何构建软件组件?)。策略模式是一个动态模式(你想如何在软件中运行一个行为?)

语法相似,但目标不同:

  • Strategy:您有更多的方法来执行操作;使用策略,您可以在运行时选择算法,并且可以修改单个策略,而不会产生太多副作用。在compile-time;
  • Bridge:中,您可以拆分接口和类的层次结构,并使用抽象引用将其连接起来(请参见explication)
票数 61
EN

Stack Overflow用户

发布于 2016-09-03 20:51:00

我也是这么想的,但最近我不得不使用bridge,并意识到bridge正在使用策略,并将抽象添加到上下文中,这样您以后就可以在不更改客户端的情况下进行更多更改。在没有抽象的情况下使用策略时,设计就不那么灵活了,并且可能需要在以后对客户端进行更改。但是当使用整个桥梁时,设计变得更加灵活。在这里,您可以看到从策略到桥接如何提供更多的灵活性。我们还假设现在"visa“和"master”不仅在卡上可用,而且在手机和芯片上也可用;如果我们使用桥接,则添加这种支持要容易得多。

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/464524

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档