在运行时,可能会创建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功能-methodX(),methodY()适用于TableB,TableC
我无法取出methodX(),methodY()并放入TableA,因为这些是TableX特定的模块功能。
因此,现在在运行时可以创建TableA,TableB,TableC,TableX(TableA),TableX(TableB),TableX(TableC)。我可以应用任何设计模式,因此无论创建什么表,只要它从TableA扩展出来,TableX都可以支持它。
最佳答案
我认为您是在谈论在顶部TableA
对象上添加功能。 Decorator模式可能是您想要的。
class TableX extends TableA {
private TableA innerObject;
public TableX(TableA inner) { innerObject = inner; }
public methodA() {
innerObject.methodA();
....
}
...
}
TableB bObject = new TableB();
TableX decoratedBObject = new TableX(bObject);
decoratedBObject.methodA();