我有一个我想重构的方法
基本上我想将顶级方法拆分为摘要和最终部分。有问题的方法在很多添加了附加功能的地方被覆盖,但最终总是进行超级调用。
代码现在基本上看起来像:(并非所有扩展类都覆盖,但那些这样做的,这样做)
class Base {
public Object getStuff(String key) {
out = //code to get data from the Database.
return out
}
class Extended1 extends Base {
public Object getStuff(String key) {
if("some_non_db_value".equals(key)) {
return "some custom stuff";
}
return super.getStuff(key);
}
}
我想要的结果是:
class Base {
public final Object getStuff(String key) {
out = getCustom(key);
if(out != null) {
return custom;
}
out = //code to get data from the Database.
return out
}
public abstract Object getCustom(String key);
}
class Extended1 extends Base {
public Object getCustom(String key) {
if("some_non_db_value".equals(key)) {
return "some custom stuff";
}
return null;
}
}
我希望有一个重构动作(或部分重构)来达到(或接近)这一点。