具有相同实现但基类不同的2个类的C#设计模式

时间:2010-12-01 21:36:47

标签: c# design-patterns dry

取两个基类A和B,它们相似但最好是不同的。每个子类都有一个子类(A'和B'),它们将相同的功能和成员添加到它们各自的类中。是否有设计模式允许我不必在A'和B'中复制代码?

我查看了BridgeDecorator,但我看不出这些是如何运作的。

谢谢, 罗布

5 个答案:

答案 0 :(得分:11)

你能使用合成并将共享代码重构为另一个C类吗?

答案 1 :(得分:2)

  

取两个基类A和B.   是相似的,但更喜欢   不同。每个都有一个子类(A'和   B')添加相同的功能   和各自的成员   类。

这是一个奇怪的起点。如果是我,我会想要改变设计的这一部分。

假设这是不合理的,无论出于何种原因,我认为Decorator是你能做的最好的事情,以避免代码重复。

您需要创建子类A'和& B”。而且你必须在每个中声明添加的方法和属性。这些成员应该委托给另一个可以实现通用功能的类的成员。该类的一个实例将包含在A'和A中。 B”。

如果这些普通成员的实施很重要,这实际上只能节省您的重复。

答案 2 :(得分:2)

策略模式。在第三个类中创建公共代码,并在A'和B'中保存一个实例。

答案 3 :(得分:0)

add the same functionality and members to their respective classes。听起来很接近一个接口,虽然它仍然有单独的实现。也许类似于Provider模式的东西? http://msdn.microsoft.com/en-us/library/ms972319.aspx

答案 4 :(得分:0)

mixin的概念接近你想要的。但是,C#本身不支持此概念。您可以使用接口和扩展方法来模仿mixins的概念,但它看起来不太漂亮。

有关详细信息,请查看此问题:Is it possible to implement mixins in C#?