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