在運行期間,可能會創建TableA或TableB或TableC。哪種設計模式用於我的場景?
public class TableA {
public void methodA() {
doSomethingA();
}
public void methodB() {
doSomethingB();
}
}
public class TableB extends TableA {
@Override
public void methodA() {
}
protected void methodC() {
}
}
public class TableC extends TableA {
@Override
public void methodB() {
}
public void methodD() {
}
}
我有另一個名爲TableX的表。
public class TableX extends TableA {
public void methodX() {
}
public void methodY() {
}
}
現在我想的TableX functionality- methodX(),methodY()申請表B,表C
我不能拿出methodX(),methodY()並投入TableA的,因爲這些都是TableX的特定模塊特徵。因此現在在運行期間可以創建表A,表B,表C,表X(表A),表X(表B),表X(表C)。我可以應用任何設計模式,以便無論Table創建了什麼,只要它從TableA擴展而來,TableX也可以支持它。
在這種情況下,Decorator和Adapter是否有區別?我似乎沒有區別,雖然我覺得這兩種模式的意圖是不同的...... – ppeterka
你說得對,有一條細線。我認爲limckmy正在尋找'Decorator'的原因是這行'public class TableX extends TableA {'所以他/她正在尋找包裝對象並保持相同的接口。在適配器的情況下,您將爲包裝對象提供一個新界面。 – Sameer
不錯,趕上Sameer!我確信Adaptor也是答案,直到你指出這一點。 –