【问题标题】:Efficiency with Type Hierarchy in JavaJava 中类型层次结构的效率
【发布时间】:2012-03-24 15:18:23
【问题描述】:

我有一个父类,现在是抽象类,用于二级的四个不同子类。对于其中一个子类,我想创建第三级子类,模拟第二级的两个子类。不过,我不希望将成为它们的父类的类是抽象类或接口,而且我认为仅仅使其具体化不会非常有效。

编辑:高效,我的意思是在给定的情况下,是否有上述选项的替代方案?

是否有任何其他有效的方法来表示这两个类在第二级基本相同?因为解释有点含糊,这里放一张图:

【问题讨论】:

  • 什么是“同级别”?为什么他们处于什么“级别”很重要?有什么问题?
  • @PéterTörök 编辑了问题以使其更加简洁。不过,我相信你已经给了我我需要的答案。谢谢。
  • 在类图中,箭头通常指向父级,它是一个箭头,因为关系的方向是有意义的。

标签: java oop


【解决方案1】:

你的问题不太清楚。

不过,我不希望将成为它们父级的类是抽象类或接口,而且我认为将其具体化不会非常有效。

好吧,如果你既不想要抽象类、具体类或接口,那恐怕你就不走运了。 Java 在声明/定义类型方面没有其他选择。

此外,Java 不允许多重继承。这意味着如果您希望 Column Major 成为 ColumnMajor TableTable With Deactivate Cell 的子类,则其中至少一个必须是interface。而且由于在 Java 中接口只能扩展其他接口,这意味着 Table 也必须是 interface

【讨论】:

  • 这清除了一切。谢谢你。我觉得最好是在二级做RowMajor和ColumnMajor接口,然后在三级实现。似乎比我正在做的要干净一些。
【解决方案2】:

在我看来,您正在混合 capabilitiesclassification 的概念。你看,继承并不是所有事情的正确工具。尝试将其中一些类组合起来,而不是子类。例如,“停用”单元格似乎是表格的一种功能,并且可能是一个单独的类,可以组合在表格类中以更改表格的行为方式。看看 strategystate 模式。

【讨论】:

  • 我肯定会研究策略模式。谢谢。
【解决方案3】:

一般来说,最好通过委托来配置一个类,而不是派生更多的子类。过度使用继承是oo初学者的典型行为。

在您的情况下,方法可能是创建一个类来配置您的实际类集的不同行为。 如果您设计的此类允许可链接,您将获得一个非常灵活、可扩展的架构

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多