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

Inb*_*ali 1 c# design-patterns

我想在我的应用程序中实现一个Bridge模式,我面临一个我无法解决的问题:
假设我有一个普通的'抽象'类,我想要有几个工具,称之为ImpA& ImpB.
当我这样做:

Abstraction a = new Abstraction(new ImpA);
Run Code Online (Sandbox Code Playgroud)

一个.

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

DeC*_*Caf 5

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

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

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