java - 设计模式/多重继承解决方法java

标签 java design-patterns multiple-inheritance

我有一个带有类层次结构的 Java 包,例如类 A 和子类 A1、A2、A3...

对于特定的应用程序,我需要创建实现接口(interface) B 的类(类型 A)。这些新类将有一些共同点,所以我的第一个想法是创建一个继承自 A 并实现 B 的基类 C ,而我的新类 C1、C2、C3 等将仅从 C 继承。但是,其中一些类 Ci 将需要 Aj 之一中存在的功能,通过这种方法,我需要重新实现此类功能(A 中未定义的功能)。对于某些 Ci,我想继承各个 Ai 的行为,但同时继承 C 中所有 Ci 的共同行为。当然,Java 不允许多重继承,所以我不能这样做直接这个。我当然不想仅仅因为不支持 MI 就重新实现这么多东西,但我没有找到解决办法。有什么想法吗?

最佳答案

您真的需要子类化还是只想重用代码?

听起来您使用的是复合模式,可能还使用了策略模式:

您的 C 类将具有 A 类型的字段,也可能具有 B 类型的字段,并在适当的情况下将调用委托(delegate)给它们。这为您提供了代码重用的所有优点,而没有继承的困惑(单个或多个)

关于java - 设计模式/多重继承解决方法java,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18240733/

相关文章:

java - SimpleFactory、FactoryMethod、抽象工厂(实体示例)

design-patterns - 过程语言有设计模式吗?

c++ - 循环运行时错误

java - 使用 SWIG 为 C++ 类创建 java 绑定(bind)

java - 向下转换为间接子类不起作用?

java - 字符串匹配的效率,Equals 与 Matches 方法

java - 将 Struts 2.1 升级到 Struts 2.3 时电子邮件验证面临问题

java - 尽管有 synchronized 关键字,线程仍进入死锁

ruby - 处理许多 if 条件的更好方法?

java - 如何正确地将TextureRegion映射到Pixmap?