我有一个方法,我想重构
基本上我想在摘要和最后部分中拆分顶级方法。 有问题的方法在很多地方被覆盖,其中添加了额外的功能,但最终总是进行超级调用。
现在代码基本上如下: (并非所有的扩展类都会覆盖,但是那些可以这样做的,以这种方式执行)
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;
}
}
我希望有一个重构动作(或部分重构)来达到(或接近)这一点。
答案 0 :(得分:3)
我首先要重命名getStuff()以获取Custom(),它将处理所有扩展类。然后更改Base类应该相对容易。