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

3

有两个基类A和B,它们相似但最好是不同的。每个类都有一个子类(A'和B'),它们向各自的类添加相同的功能和成员。有没有一种设计模式可以让我不必在A'和B'中重复代码?

我已经看过Bridge和Decorator,但我看不出它们如何工作。

谢谢, Rob


1
"代码生成"算作设计模式吗? - Gabe
5个回答

11

您是否可以使用组合并将共享代码重构到另一个类C中?


2
取两个基类A和B,它们相似但最好是不同的。每个基类都有一个子类(A'和B'),它们分别向各自的类添加相同的功能和成员。
这是一个有点奇怪的起点。如果我是你,我会考虑改变设计的这一部分。
假设由于某种原因,这不是合理的,我认为装饰器是避免代码重复的最佳选择。
您需要创建子类A'和B'。并且您将不得不在每个子类中声明添加的方法和属性。这些成员应该委托给另一个类的成员,该类可以实现公共功能。该类的实例将包含在A'和B'中。
如果这些公共成员的实现很重要,那么这只能节省您的重复。

2

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


0

我可能会因为其他原因而使用接口,但正如你所说,它不会减少代码复制。 - Robert Gowland

0
混合(mixins)的概念接近于您想要的内容。然而,C#并不原生支持这个概念。您可以使用接口和扩展方法来模拟混合的概念,但这看起来并不太美观。
请参考以下问题以获取更多信息:在C#中是否可能实现混合?

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接