2010-12-01 61 views
3

取两个基类A和B,它们是相似但不同的。每个都有一个子类(A'和B'),它们将相同的功能和成员添加到它们各自的类中。有没有一种设计模式可以让我不必在A'和B'中复制代码?具有相同实现但基类不同的2个类的C#设计模式

我看过BridgeDecorator,但我看不出这些如何工作。

感谢, 罗布

+1

不“代码生成”算作一个设计模式? – Gabe 2010-12-01 21:38:22

+1

@加贝,当然不是。 – 2010-12-01 21:43:36

回答

11

你能使用成分和共享代码重构到另一个C类?

2

取两个基类A和B,其 类似,但是优选的是 不同。每个子类都有一个子类(A'和 B'),它们将相同的功能 和成员添加到它们各自的 类。

这是一个奇怪的地方从一开始。如果是我,我会期待改变这部分设计。

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

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

如果这些常见成员的实施是重要的,这实际上只会节省您的重复。

2

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

0

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

对此问题作进一步的信息看:Is it possible to implement mixins in C#?

相关问题