【问题标题】:Extending from multiple classes in java从java中的多个类扩展
【发布时间】:2013-04-19 01:02:02
【问题描述】:

我知道 java 不支持多重继承。我有 3 个具体的基类 A、B 和 C。我想在单个类中重用 A、B 和 C 中的所有实用方法 DI 不能使用组合,因为不能使用 A、B 和 C 类。请给我一条出路。

感谢和问候, 索拉布

【问题讨论】:

  • 改用接口。
  • 你可以看看这个:stackoverflow.com/questions/3917190/…
  • 仅仅因为你想使用某个类的方法而使用继承是个坏主意——这不是继承的意义。
  • 继承和组合是OO提供的扩展功能的方式。我不明白你的意思是不能玩 A、B 和 C。你可以将它们用作不同类的数据成员,比如 D 或 E。

标签: java design-patterns multiple-inheritance composition


【解决方案1】:

我认为你可以使用 Facade 模式

Facade http://i.msdn.microsoft.com/dynimg/IC400938.png

至于你的例子:

  • SubsystemA 是你的 A 类

  • SubsystemB 是你的 B 类

  • SubsystemC 是你的 C 类

  • Facade 是您的 D 类,您可以在其中为所欲为。

我认为您可以以这种方式使用组合,因为它不会破坏封装。

【讨论】:

    【解决方案2】:

    首先,使用多个接口是可能的(并且非常普遍)。

    如果为了使用多个扩展类,你需要使用:

    A extends BB extends CD extends A 但并不总是可行的。

    考虑使用composite pattern 而不是多重继承。

    【讨论】:

    • 除了 B 在不应该访问 A 的情况下可以访问 A。
    • 如 OP 所述,A B 和 C 不可更改。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-15
    • 1970-01-01
    • 1970-01-01
    • 2011-01-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多