3

我有一个我想重构的方法

基本上我想将顶级方法拆分为摘要和最终部分。有问题的方法在很多添加了附加功能的地方被覆盖,但最终总是进行超级调用。

代码现在基本上看起来像:(并非所有扩展类都覆盖,但那些这样做的,这样做)

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;
    }
}

我希望有一个重构动作(或部分重构)来达到(或接近)这一点。

4

1 回答 1

3

我首先将 getStuff() 重命名为 getCustom() ,这将处理所有扩展类。那么更改 Base 类应该相对容易。

于 2012-08-03T09:37:05.050 回答