标签: bridge

代理,装饰器,适配器和桥接模式有何不同?

我在看代理模式,对我而言,它似乎很像装饰器,适配器和桥模式.我误会了什么吗?有什么不同?为什么我会使用Proxy模式而不是其他模式?你过去在现实世界的项目中如何使用它们?

design-patterns bridge decorator proxy-pattern

381
推荐指数
8
解决办法
7万
查看次数

你什么时候使用桥模式?它与适配器模式有何不同?

有没有人在现实世界的应用程序中使用Bridge Pattern?如果是这样,你是如何使用它的?是我,还是仅仅是适配器模式,在混合中引入了一点依赖注入?它真的值得拥有自己的模式吗?

design-patterns bridge adapter

150
推荐指数
10
解决办法
8万
查看次数

113
推荐指数
6
解决办法
5万
查看次数

桥梁模式和战略模式之间有什么区别?

我尝试阅读有关dofactory,维基百科和许多网站的许多文章.我不知道桥梁模式和战略模式之间的差异.

我知道它们都将抽象与其实现分离,并且可以在运行时更改实现.

但我仍然不知道在哪种情况下我应该使用策略或在哪种情况下我应该使用桥接器.

design-patterns bridge strategy-pattern

111
推荐指数
5
解决办法
4万
查看次数

战略与桥梁模式

我知道之前已经问过这个问题(例如,桥梁模式和策略模式之间有什么区别?).

但是,有人可以使用明确的例子解释,区别的是什么,以及在哪种情况下必须选择另一种情况?更少概念理论,更实际的"现实生活"情景将不胜感激.

oop design-patterns bridge strategy-pattern

33
推荐指数
2
解决办法
2万
查看次数

Luci(openwrt)wifi桥接客户端 - 如何配置?

我需要配置无线网桥(类似无线交换机).

我安装了OPENWRT的TP-LINK TL-WR740N v4.22和其他带默认固件的TP-LINK路由器.我需要做这个设置:

路由器A(通过WAN端口连接到Internet)具有IP:192.168.12.1并且正在运行DHCP服务器

路由器B(OPENWRT)通过WiFi连接到ROUTER A - 如何在这里配置接口?

PC A - 通过有线连接到路由器B - 应从路由器的A DHCP服务器获取IP.

如何配置?

client bridge openwrt wifi

22
推荐指数
1
解决办法
8万
查看次数

桥与适配器设计模式

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

这是实施:

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

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

我已经阅读了SO,GoF和维基百科中的所有帖子,但它确实没有意义!

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

这是来自GoF:

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

我不完全理解上述说法,

  1. 这是否意味着如果我在设计时更改了适配器或更改了原始界面的实现,那么它是Bridge Pattern
  2. 差异听起来微不足道,在实施/排除方面还有其他差异吗?
  3. 怎么会有人说出 开发使用了什么实现?
  4. 谁能给我一个很好的桥接模式示例,以及如何在软件生命周期中对其进行更改?

更新:

再次来自GoF:

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

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

UPDATE2:

刚刚发现这篇令人难以置信的文章:C#中的插图GOF设计模式

这是真正的Bridge Patter结构:

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

c# wcf design-patterns bridge adapter

19
推荐指数
3
解决办法
7723
查看次数

桥接模式是否将抽象与实现分离?

我从不同的文章中学习了Bridge模式,并且按照我的理解实现了它.令我困惑的一件事是桥模式说

BridgePattern将抽象与其实现分离,以便两者可以独立变化

这个陈述的含义是什么?实现是在单独的jar中吗?

什么是独立声明的含义?

考虑提供的journaldev文章,详细说明答案.

任何帮助是极大的赞赏.

java abstraction design-patterns bridge

18
推荐指数
2
解决办法
1757
查看次数

log4j-to-slf4j 和 log4j-over-slf4j 之间的区别

我真的不明白 log4j-to-slf4j.jar 和 log4j-over-slf4j.jar 之间的区别。根据我在互联网上读到的

\n\n

log4j-to-slf4j.jar:https://logging.apache.org/log4j/2.x/log4j-to-slf4j/index.html

\n\n
\n

“Log4j 2 到 SLF4J 适配器允许将编码为 Log4j 2 API 的应用程序路由到 SLF4J。使用此适配器可能会导致性能损失,因为 Log4j 2 消息在传递之前必须进行格式化到 SLF4J。使用 Log4j 2 作为实现,通常仅当它们被 Filter 或 Appender 访问时才会被格式化。”

\n
\n\n

log4j-over-slf4j.jar ( http://www.slf4j.org/legacy.html )

\n\n
\n

“它允许 log4j\n 用户将现有应用程序迁移到 SLF4J,而无需更改\xc2\xa0a\n 单行代码\xc2\xa0,而只需将\xc2\xa0log4j.jar\xc2\xa0file\n 替换为\xc2\xa0log4j -over-slf4j.jar,如下所述。log4j-over-slf4j\n 模块包含最广泛使用的 log4j 类的替换,即\n org.apache.log4j.Category、org.apache.log4j.Logger、\n org.apache.log4j.Priority、org.apache.log4j.Level、\n org.apache.log4j.MDC 和 org.apache.log4j.BasicConfigurator。这些\n 替换类将所有工作重定向到其对应的 SLF4J\n 类”。

\n
\n\n

据我了解,两者都解决同一问题。但具体区别在哪里呢?桥接器与适配器?

\n\n

多谢!

\n

logging log4j bridge adapter slf4j

16
推荐指数
2
解决办法
1万
查看次数

如何编写重用常见 JavaScript 代码的 React Native“本机模块”(桥)?

原生模块如何回调到 JavaScript 内部桥接方法,然后在内部方法中进行处理,例如将数据解析为 JSON,然后引发 React Native 应用程序接收到的事件?

对于跨平台的桥模块,我想避免在重复的代码目标C和Java。如果可能,我想用 JavaScript 编写跨平台桥接模块代码,并在 Android 和 iOS 上重复使用。

我目前的解决方案:

这有效。

这将导致对 sendEventWithName 的两次调用:

  1. 带有“_processResponseInJavaScriptMethod”的 sendEventWithName
  2. forwardEventWithName 到 sendEventWithName 到本机应用程序。

题:

本机代码是否有一种方法可以使用 JS 调用同步处理数据,然后使用 sendEventWithName 立即发送结果?

还是每个 native > JS 调用都需要 async _bridge enqueueJSCall

文件:MyNativeModule.m

// 使用 forwardEventWithName 来转发事件 
// 由常见的跨平台JS处理到react native app
RCT_EXPORT_METHOD(forwardEventWithName:(NSString*)name
                  正文:(NSString*)正文){
    [self sendEventWithName:name body:body];
}

// 1 - 响应本机应用程序调用 sendQueryToBluetoothDevice
// 2 - 设备在收到响应时调用 commandResponse
RCT_EXPORT_METHOD(sendQueryToBluetoothDevice:(NSString*)command {
    [_device sendCommand:command];
}

// 1 - 从外部蓝牙设备接收 XML 响应
// 2 …

bridge react-native

14
推荐指数
2
解决办法
1928
查看次数