取两个基类A和B,它们相似但最好是不同的。每个子类都有一个子类(A'和B'),它们将相同的功能和成员添加到它们各自的类中。是否有设计模式允许我不必在A'和B'中复制代码?
我查看了Bridge
和Decorator
,但我看不出这些是如何运作的。
谢谢, 罗布
答案 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#?