同じリストと引数の型、ほぼ同じ本体を持つ 2 つのメソッドがありますが、それぞれが別の関数を呼び出して要素のリストをフェッチします。より正確には:
public void method1 (int a, int b) {
//body (the same in both of methods)
List<SomeObject> list = service.getListA(int c, int d);
//rest of the body (the same in both of methods)
}
public void method2 (int a, int b) {
//body (the same in both of methods)
List<SomeObject> list = service.getListB(int c, int d, int e);
//rest of the body (the same in both of methods)
}
その場合、コードの重複を回避する問題への最善のアプローチは何ですか? ストラテジーパターンを考えたのですが、引数リストの違いに問題があります。
アップデート:
public void method1 (int a, int b) {
//body (the same in both of methods)
int c = some_value;
List<SomeObject> list = service.getListA(a, b, c);
//rest of the body (the same in both of methods)
}
public void method2 (int a, int b) {
//body (the same in both of methods)
int c = some_value;
int d = another_value;
List<SomeObject> list = service.getListB(a, b, c, d);
//rest of the body (the same in both of methods)
}
したがって、一部の変数はローカルであり、一部は引数を介して渡されます。