【问题标题】:C# Design Pattern for 2 classes with same implementation but different base class具有相同实现但不同基类的 2 个类的 C# 设计模式
【发布时间】:2011-05-18 18:46:59
【问题描述】:

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

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

谢谢, 抢

【问题讨论】:

  • “代码生成”算不算一种设计模式?

标签: c# design-patterns dry


【解决方案1】:

您能否使用组合并将共享代码重构为另一个 C 类?

【讨论】:

    【解决方案2】:

    取两个基类 A 和 B 相似但最好是 清楚的。每个都有一个子类(A'和 B') 添加相同的功能 和成员各自的 类。

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

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

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

    如果这些公共成员的实现很重要,这真的只会为您节省重复。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

        • 我可能会因为其他原因最终使用接口,但正如你所说,它不会减少代码重复。
        【解决方案5】:

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

        请查看此问题以获取更多信息:Is it possible to implement mixins in C#?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2021-07-01
          • 1970-01-01
          • 2022-01-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多