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