关于在C#中实现'Bridge'模式

时间:2011-09-10 08:41:21

标签: c# design-patterns

我想在我的应用程序中实现Bridge模式,我遇到了一个无法解决的问题:
假设我有一个普通的“抽象”课,我想要几个工具,称之为ImpA& ImpB。
当我这样做时:

Abstraction a = new Abstraction(new ImpA);

一个。

在点之后,我希望看到ImpA类的公共属性/方法列表,但除非我把它们放在Abstraction中,否则我无法访问它们。
我绝对不希望将所有方法都放在抽象中,因为我希望每个工具都是独立的,而不是全部都在1级。
我在这里想念什么?

1 个答案:

答案 0 :(得分:5)

Abstraction类的目的是从您的情况中抽象出实现(ImpA)。这意味着Abstraction类应该定义客户端应该使用的接口(方法),然后将这些调用传播或“转换”到实现上的操作。这当然意味着您需要在Abstraction类中实现组成公共接口的方法,并让它们调用实现。

如果您只是想让实际的实现类变化但它们的接口相同并且都暴露给客户端,只需定义一个描述“ImpA”类的公共方法的接口并使用客户端的接口

您可以在此处找到Bridge模式的.NET描述:http://www.dofactory.com/Patterns/PatternBridge.aspx#_self1