性能/灵活性,例如类或扩展它

时间:2011-08-02 13:11:24

标签: java performance

我正在使用2个库,我需要一个库中的一个类来实现另一个库的功能。我的第一个尝试是获取库A的源代码并使类从库B扩展该类。除了很多修复等没有使代码完全稳定等以及更新其中一个库之后,它的工作方式很好。地狱。

像这样:

abstract class classA extends classB{
}

现在我也想过做这样的事情:

abstract class newClass extends classB{
    private classA A = new classA();

    public void exampleMethod(){
        A.exampleMethod();
    }
}

第二种选择是否表现不佳?如果是的话,有多糟糕?

2 个答案:

答案 0 :(得分:2)

嗯,GoF书第一章中的Erich Gamma说:“赞成对象构成超过类继承”。请参阅:http://www.artima.com/lejava/articles/designprinciples4.html

答案 1 :(得分:2)

由于各种原因,通过委托表格(mixin)的扩展是可取的,但最相关的是你(可能)以非规范的方式扩展第三方图书馆类。

但这都是猜测,因为我们不知道你在谈论什么库。例如,它可能是一个写得不好的库,classA(使用你的例子)实际上不应该被扩展,但是作者忽略了规范final class classA等等。如果是这样的话,那么显然你不想扩展那个类(即使你可以)。

所有这一切,鉴于您(a)只需要共享功能,(b)不需要多态语义,委托表单非常有意义。

关于表现焦虑的建议:基准测试。

不要忽视最终决定 - JIT是你的朋友(对它好一点并喂它):

final private classA A = new classA();