一位同事向我询问了我在 ASP.net 客户端应用程序中实现 WCF Windows 服务的设计模式,我真的不知道它是Bridge还是Adapter!
这是实现:
- 我已获得服务合同
- 定义了一个类似于我的 WCF 数据合约的新接口
- 我创建了一个 WCF 客户端并将其包装在新界面中
- 将新的接口操作映射到原来的 WCF 客户端(我在这里做了一些日志记录/错误处理)
我一直认为它是适配器模式的实现,但我真的不知道为什么不是Bridge!
我已经阅读了 SO、GoF 和维基百科中的所有帖子,但这真的毫无意义!
据我了解,这两种模式都指向一个现有类型,都将抽象与其实现分离,我错过了一点吗?
这是来自GoF的:
这些模式之间的主要区别在于它们的意图。适配器专注于解决两个现有接口之间的不兼容性。它不关注这些接口是如何实现的,也不考虑它们如何独立发展。这是一种让两个独立设计的类一起工作而无需重新实现一个或另一个的方法。另一方面,桥接了一个抽象及其(可能有很多)实现。它为客户端提供了一个稳定的接口,即使它允许您改变实现它的类。随着系统的发展,它还适应新的实现。
我不完全理解上面的说法,
- 这是否意味着如果我在设计时改变适配者或更改原始接口的实现,那么它就是桥接模式?
- 差异听起来微不足道,在实现/抽象方面还有其他差异吗?
- 谁能知道开发后使用了什么实现 ?
- 谁能给我一个很好的桥接模式示例以及如何在软件生命周期中更改它?
更新:
再次来自 GoF:
请记住,适配器使两个现有接口协同工作,而不是定义一个全新的接口。
这是否意味着更改现有接口以使其可以与另一个接口一起使用是Adapter的实现?
更新2:
刚刚发现这篇令人难以置信的文章:Illustrated GOF Design Patterns in C#
这是真正的 Bridge Pattern 结构:
我错过了桥模式允许您组合不同的抽象和实现并独立扩展它们 的事实