使用 ASM 实现 Java 语言的“多重继承”

问题的提出

在大部分情况下,香港虚拟主机,网站空间,需要多重继承往往意味着糟糕的设计。但在处理一些遗留项目的时候,多重继承可能是我们能做出的选择中代价最小的。由于 Java 语言本身不支持多重继承,这常常会给我们带来麻烦,最后的结果可能就是大量的重复代码。本文试图使用 ASM 框架来解决这一问题。在扩展类的功能的同时,不产生任何重复代码。

考虑如下的实际情况:有一组类,名为 SubClass1、SubClass2、SubClass3 和 SubClass4,它们共同继承了同一个父类 SuperClass。现在,我们需要这组类中的一部分,例如 SubClass1 和 SubClass2,这两个类还要实现另外两个接口,它们分别为:IFibonacciComputer 和 ITimeRetriever。然而,这两个接口已经有了各自的实现类 FibonacciComputer 和 TimeRetriever。并且这两个类的实现逻辑就是我们想要的,我们不想做任何改动,只希望在 SubClass1 和 SubClass2 两个类中包含这些实现逻辑。

它们的结构如图 1 所示:

图 1. 结构类图

由于 SubClass1,SubClass2 已经继承了 SuperClass,网站空间,所以我们无法让它们再继承 FibonacciComputer 或 TimeRetriever。

所以,想要它们再实现 IFibonacciComputer 和 ITimeRetriever 这两个接口,必然会产生重复代码。

下面,我们就使用 ASM 来解决这个问题。

有的旅行是为了体验生活,感悟人生。

使用 ASM 实现 Java 语言的“多重继承”

相关文章:

你感兴趣的文章:

标签云: