0
我正在使用这个库,我不得不在一些超类中重写一些方法。我现在所做的是扩展我需要的类,并重新定义我需要从它的超类中重写的方法。扩展图书馆中层次结构中的超类 -
class A { ... }
class B extends A { ... }
class C extends A { ... }
class myD extends B {
protected void overriddenAfunction() { ... }
}
这显然是不好当几个班扩展了同超一流的,我想所有的子类使用同一个重写的方法(例如,如果C也需要overridenAFunction相同的定义() )。
是否有一些设计模式或方法使这个漂亮?我想象你可以做这样的事情:
class A { ... }
class B extends A { ... }
class C extends A { ... }
class myD extends A {
private A BorC = null;
public myD(A BorC) {
this.BorC = BorC;
}
protected void overriddenAfunction() { ... }
public void overriddenBfunction() {
((B) BorC).overriddenBfunction();
}
public void overriddenCfunction() {
((C) BorC).overriddenCfunction();
}
}
Usage:
A testB = new myD(new B());
A testC = new myD(new C());
但是,然后我需要把每个方法从B和C,如果它甚至工作。
有没有更好的方法或解决方法?我想要做的就是避免重新包装图书馆,但我想这确实是最好的解决方案?
我想我也可以制作B和C的拷贝,让它们在myD扩展A时扩展myD。这个库也有所有可用的源文件,所以我可以做这个或类似的东西。
我可能做了一个糟糕的工作来解释这种情况。我正在使用JFreeChart(它是绘制图表的库)。它有一个类NumberAxis(A),其功能是控制轴线上的刻度线应该如何绘制。然后它得到了扩展该类的类DateAxis(B)和SymbolAxis(C)。这些类包含一些特定的功能,如设置标签的格式。我想要做的是在NumberAxis中重写方法的一些有效方法,以便DateAxis和SymbolAxis都可以使用它们。 – user1540134 2012-07-20 09:34:09