繁体   English   中英

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

[英]C# Design Pattern for 2 classes with same implementation but different base class

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

我看过BridgeDecorator ,但我看不出它们是如何工作的。

谢谢,罗布

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

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

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

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

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

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

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

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

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

有关更多信息,请查看此问题: 是否可以在C#中实现mixins?

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM