【问题标题】:How to create grandchild class permutations?如何创建孙类排列?
【发布时间】:2018-03-27 09:14:07
【问题描述】:

我有一个“声音”类,用于音频引擎。这是一个基本的声音对象,仅包含音频文件的文件路径和用于播放该文件的 Java Clip 对象。

我有几个这个班的子班。例如,一个 LoopSound 有特殊的变量和函数来促进它完成后的声音循环。还有 MultiSound 用于需要同时播放多个实例的音效,并且有自己的一组变量和函数。

当然,可能会有一种声音既想要循环又想要多重,所以我制作了 LoopingMultiSound。

但后来我有了第三个想法,一种可以应用波形来获得振荡音量的声音。

但这意味着,如果我需要一个由这三者组合而成的类,我需要创建该类。这意味着我需要手动创建所有 8 个类。对于我要添加的每个功能,子类数量都会增加一倍,这是不可持续的。

但我不能只是将所有这些函数都堆积到原始的 Sound 对象中,并且只有一个布尔值来说明子类方面是否在线。这会造成很多混乱,并且有点违背继承编程的目的。我的意思是,没有什么能阻止我,这是最简单的解决方案,但也是最不优雅的。

一定有更好的方法。如何动态创建孙类排列?

【问题讨论】:

  • 为什么不在这里使用组合而不是继承?
  • 什么是组合优于继承?
  • 这个词是有利于组合而不是继承,意思是:首先考虑组合,只有在真正需要时才使用继承。
  • 只要用谷歌搜索,你就会得到很多想法。
  • 我刚刚在谷歌上搜索了 Java 组合,我看到的只是帖子说要这样做而不是继承,而不是它实际上是什么或如何使一个类组合另一个类:\ 这是新事物吗,我从来没有在大学听过一次。

标签: java inheritance multiple-inheritance


【解决方案1】:

您应该考虑组合,即编写一个包装器来对这些功能进行分组,下面的链接可能会有所帮助,

Difference between Inheritance and Composition

【讨论】:

    猜你喜欢
    • 2011-09-05
    • 2016-06-08
    • 1970-01-01
    • 1970-01-01
    • 2011-12-26
    • 1970-01-01
    • 1970-01-01
    • 2023-03-08
    • 1970-01-01
    相关资源
    最近更新 更多