删除2个非相关类的相同公共方法中的代码重复

时间:2014-09-08 08:56:00

标签: java code-duplication

我有两个不同的类,其中包含相当多的相同公共方法。

public class HorizontalPackageSelector extends HorizontalScrollView {

    // skipped

    public void method1() {
        doSomething1();
        doSomething2();
    }

}

public class VerticalPackageSelector extends ScrollView {

    // skipped

    public void method1() {
        doSomething1();
        doSomething2();
    }

}

以及其他几种方法(两个类中大约200行)。

我只看到一种避免重复的方法:

public class PackageSelectorHelper {

    // skipped

    public void method1() {
        doSomething1();
        doSomething2();
    }

}

public class HorizontalPackageSelector extends HorizontalScrollView {

    private final PackageSelectorHelper helper = new PackageSelectorHelper(this);

    // skipped

    public void method1() {
        helper.method1();
    }

}

public class VerticalPackageSelector extends ScrollView {

    private final PackageSelectorHelper helper = new PackageSelectorHelper(this);

    // skipped

    public void method1() {
        helper.method1();
    }

}

但如果许多相同的方法太大,这并不容易。

2 个答案:

答案 0 :(得分:0)

您可以创建一个单独的类,并使您的类从该类扩展 或者你可以使方法静态 - 不完全知道方法

中的实现

答案 1 :(得分:0)

interface AProb{
  public void method1();
  public void method2();
  public void method3();
}

Class aImpl implements AProb{
      public void method1(){
         //Some thing
      }
      public void method2(){
         //Some thing
      }
      public void method3(){
         //Some thing
      }
}

public class VerticalPackageSelector extends ScrollView {
   AProb a = new aImpl();
      public void method1(){
         a.method1();
      }
      public void method2(){
         a.method2();
      }
      public void method3(){
         a.method3();
      }
}