在运行时期间,可能会创建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功能 - 方法X(),方法Y()适用于TableB,TableC
我无法取出methodX(),methodY()并放入TableA,因为它们是TableX特定的模块功能。
所以现在在运行时TableA,TableB,TableC,TableX(TableA),TableX(TableB),TableX(TableC)中可能会创建。我可以应用任何设计模式,这样无论Table创建什么,只要它从TableA扩展,TableX也可以支持它。
答案 0 :(得分:3)
我认为您正在讨论在顶级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();
答案 1 :(得分:1)
我很难搞清楚你的意思,但我认为你想要的是Adapter pattern,也称为Wrapper。