问题标签 [bridge]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
9 回答
20498 浏览

oop - 策略与桥梁模式

我知道以前有人问过这个问题(例如,桥模式和策略模式有什么区别?)。

但是,有人可以使用明确的示例来解释,有什么区别以及在何种情况下必须选择一个而不是另一个?更少的概念理论,更实际的“现实生活”场景将受到赞赏。

0 投票
3 回答
5151 浏览

java - AbstractFactory 与桥接模式

我刚刚了解了BridgePattern 及其意图:将抽象与其实现分离,以便两者可以独立变化

但是为什么不能AbstractFactory做同样的事情呢?

我知道 anAbstractFactory可以创建一个特定的桥梁,但我的问题涉及使用AbstractFactoryBridge解耦抽象和实现。

你能解释一下AbstractFactoryBridgePattern之间的真正区别吗?

0 投票
1 回答
118 浏览

java - 尝试在 Java 中实现桥接模式时出错

我想将 Shape 对象传递给 Vector 或 Raster 等 ShapeImp 对象。尝试从 Circle 和 Square 的构造函数内部传递“this”时出现错误。我想将具体形状传递给 Vector 或 Raster。

Netbeans 在线错误

超级(平台,x,y,这个,“Circle999”);

“在调用超类型构造函数之前无法引用 this 在构造函数中泄漏 this”

0 投票
2 回答
573 浏览

java - 桥接模式——Java 编译的好处?

Design Patterns - Elements of Reusable Object-Oriented Software一书中说:

在只有一个实现(一对一)的情况下,不需要创建抽象实现类。这是桥接模式的退化案例;Abstraction 和 Implementor 之间存在一对一的关系。尽管如此,当类的实现更改不得影响其现有客户时,这种分离仍然很有用——也就是说,它们不必重新编译,只需重新链接即可。

我怀疑编译时间的好处,因为我无法想象在 Java 中实现更改会重新编译其超类(在这种情况下是抽象的)的情况。

例如,如果我们有 X 扩展 Y 并且客户这样做:

X 的改变并不意味着 Y 的重新编译(当然,如果我们不想改变 X 的方法签名)

使用桥接模式时完全相同:

XImplementor 的变化并不意味着重新编译 YAbstraction。

因此,根据我的说法,这种好处不会出现在 Java 中,并且对于一对一 => 不需要桥接模式。

也许子类的变化会迫使超类用其他语言重新编译?喜欢 SmallTalk 和 C++ 吗?

你有什么意见?

0 投票
1 回答
1839 浏览

design-patterns - GoF 设计模式 Bridge/Adapter/Decorator

我正在阅读设计模式,有一个问题我觉得我自己无法回答。Adapter、Bridge 和 Decorator 在结构上是不同的,还是它们编码相同但只是应用了不同的语义?

0 投票
3 回答
1287 浏览

c# - 桥接模式还是工厂模式?

在我的设计中,我第一次设计的是工厂模式。但有人建议使用更好的桥接模式。

这是我的场景:如何改进我的抽象工厂模式?

我只想知道哪种模式最适合这种情况..我很困惑!

我的方案的摘要是:

想象一个黑匣子,这个黑匣子接收一个叫作的对象 Configuration,它输出的是一个Problem对象

这个黑盒子一开始我称之为工厂,但后来我需要使用泛型来更具体地在我的抽象类中,所以有人告诉我最好使用桥。

另外,在我的工厂中,需要在构造函数中接收输入值,并且还可以修改实例..所以这部分是关键。

我不太了解这种模式,所以我只想使用这个简短的场景,我该怎么办?

0 投票
3 回答
8502 浏览

c# - 桥接器与适配器设计模式

一位同事向我询问了我在 ASP.net 客户端应用程序中实现 WCF Windows 服务的设计模式,我真的不知道它是Bridge还是Adapter

这是实现:

  • 我已获得服务合同
  • 定义了一个类似于我的 WCF 数据合约的新接口
  • 我创建了一个 WCF 客户端并将其包装在新界面中
  • 将新的接口操作映射到原来的 WCF 客户端(我在这里做了一些日志记录/错误处理)

我一直认为它是适配器模式的实现,但我真的不知道为什么不是Bridge

我已经阅读了 SO、GoF 和维基百科中的所有帖子,但这真的毫无意义!

据我了解,这两种模式都指向一个现有类型,都将抽象与其实现分离,我错过了一点吗?

这是来自GoF的:

这些模式之间的主要区别在于它们的意图。适配器专注于解决两个现有接口之间的不兼容性。它不关注这些接口是如何实现的,也不考虑它们如何独立发展。这是一种让两个独立设计的类一起工作而无需重新实现一个或另一个的方法。另一方面,桥接了一个抽象及其(可能有很多)实现。它为客户端提供了一个稳定的接口,即使它允许您改变实现它的类。随着系统的发展,它还适应新的实现。

我不完全理解上面的说法,

  1. 这是否意味着如果我在设计时改变适配者或更改原始接口的实现,那么它就是桥接模式
  2. 差异听起来微不足道,在实现/抽象方面还有其他差异吗?
  3. 谁能知道开发使用了什么实现 ?
  4. 谁能给我一个很好的桥接模式示例以及如何在软件生命周期中更改它?

更新:

再次来自 GoF:

请记住,适配器使两个现有接口协同工作,而不是定义一个全新的接口。

这是否意味着更改现有接口以使其可以与另一个接口一起使用是Adapter的实现?

更新2:

刚刚发现这篇令人难以置信的文章:Illustrated GOF Design Patterns in C#

这是真正的 Bridge Pattern 结构:

我错过了桥模式允许您组合不同的抽象和实现并独立扩展它们 的事实在此处输入图像描述

0 投票
2 回答
614 浏览

design-patterns - 正确认识桥型

我是否正确理解桥接模式:

前:

后(桥):

0 投票
1 回答
2719 浏览

design-patterns - 包装器、桥接器和调解器之间有什么区别?

我正在查看我的软件架构课程的幻灯片,据说这三个术语之间存在差异。尽管幻灯片试图解决这些差异,但我并没有完全“理解”它。如果有人能帮助澄清这三者的区别、优势和劣势,那就太好了。

0 投票
1 回答
184 浏览

python - 网桥无法连接到rabbitmq

我有rabbitmq运行...

$ rabbitmq-server Activating RabbitMQ plugins ... 6 个插件被激活:
* amqp_client-0.0.0
* mochiweb-1.3-rmq0.0.0-git
* rabbitmq_management-0.0.0
* rabbitmq_management_agent-0.0.0
* rabbitmq_mochiweb-0.0.0
* webmachine -1.7.0-rmq0.0.0-hg 名称为“rabbit”的节点已经在“barber”上运行

当我尝试运行~/.bridge/server start它时,它会因崩溃报告而关闭。文档中没有任何内容涉及配置rabbitmq。

我究竟做错了什么?

谢谢。