【问题标题】:inheritance design patterns继承设计模式
【发布时间】:2011-01-19 19:30:25
【问题描述】:

我正在编写一个程序,其中每个组件都有一个继承结构,具有三个层次...... ui、逻辑和数据......其中每个层次都有一个所有组件必须实现的已定义功能的接口。这些级别中的每一个还具有一些可以为整个界面通用编写的功能,而不是为每个组件重复编写。

在我看来,最好的方法是接口和组件实现之间的抽象类,它执行所有通用功能(如链接的class diagram here)......但C#的继承规则只让我具有未实现接口的多重继承。实现此类行为的最佳实践设计是什么?

【问题讨论】:

  • 所以所有组件都必须是一个单独的类来实现你的 UI、逻辑、数据接口?这似乎根本不是一个好的设计。
  • @Anon - 我不认为这就是我的意思......每个组件都有不同的继承级别,其中实现了特定的相关接口(参见链接图片)。我是这种分离的新手,所以我可能做错了。
  • 您的 UI 不应继承自您的业务逻辑(反之亦然)。
  • 图片的链接对我不起作用。不管怎样,@Anon 是正确的,你的 UI 不应该从你的数据或逻辑中继承任何东西。

标签: c# design-patterns multiple-inheritance


【解决方案1】:

为什么不将每个组件(UI、逻辑和数据)放在不同的类中,然后让 UI 使用逻辑类,然后让逻辑类使用数据类。

这样您就可以让每个类都继承自相应的泛型类。

记住,你应该prefer composition over inheritance

【讨论】:

  • 啊,这确实更有意义。
【解决方案2】:

每个(抽象类和接口)都有自己的优点和缺点。虽然 Russell 在建议 组合优于继承 方面是正确的,但使用模式建议 将程序用于接口,而不是实现(Head First Design Patterns)。

抽象类提供了大量的灵活性,您可以在其中实现方法在幕后可以这么说,强制实现等。如果这是一个问题,两个接口都提供多态性。但是抽象类需要一个基继承槽。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-07-20
    • 1970-01-01
    • 2010-12-06
    • 1970-01-01
    • 1970-01-01
    • 2012-09-04
    • 2016-09-05
    • 1970-01-01
    相关资源
    最近更新 更多