【发布时间】:2021-05-05 23:09:10
【问题描述】:
我有一个有很多方法的类。这个类被复制到几个不同的地方,每个方法的作用略有不同。我要做的是将通用代码移到具有相似方法签名的类中,但参数是另一个类的参数中的对象继承的基类。当调用继承类中的方法时,我希望它重定向到基类方法,执行该代码,然后以某种方式回调到继承类方法。 我无法提供确切的代码,但我希望这个例子就足够了。
class BaseTableVersion{
Long getId();
void setId(Long id);
String getVersion();
void setVersion(String version);
TableType getTableType();
}
class TableVersion extends BaseTableVersion{
Long getVersionNumber();
void setVersionNumber(Long versionNumber);
}
//this class needs to exists in some capacity. I can't make it inherit a class as it is now because
//it already inherits another class (which I can't show or change) and java doesn't support multiple.
// inheritence. I can add members or change methods
class TableVersionRules{
void create(TableVersion tableVersion){
//do stuff
}
void versionChanged(TableVersion tableVersion){
//do stuff
}
}
//this class doesnt need to exists, its just to hopefully illustrate what i want.
class BaseTableVersionRules<B extends BaseTableVersion>{
void create(B tableVersion){
//do stuff
//call TableVersionRules.create(tableVersion) somehow
}
void versionChanged(B tableVersion){
//do stuff
//call TableVersionRules.versionChanged(tableVersion) somehow
}
}
所以,从概念上讲,我想要以某种方式链接 TableVersionRules 和 BaseTableVersionRules,这样当调用 TableVersionRules.versionChanged 时,它将首先调用 BaseTableVersionRules.versionChanged,然后执行 TableVersionRules.versionChanged 中的操作。我可以为此使用什么设计模式,或者这只是违反多态性?
【问题讨论】:
-
您说您想从您的
BaseTableVersionRules.create调用TableVersionRules.create(...),但BaseTableVersionRules没有扩展TableVersionRules或持有一个实例? -
是的,但是 BaseTableVersionRules 可以更改。
-
我只是对你的标题感到困惑。您说过您希望子类调用父类方法,但您的问题中没有父类或子类?
标签: java inheritance wrapper