Вы можете ввести общий метод для выделения общей части.
Затем, в соответствии с вашими требованиями, вы можете сделать:
1) если 3 метода находятся в одном классе: извлечениекаждый набор операторов try
тел в 3 конкретных методах и передает этот метод в качестве параметра Runnable
в общем методе.
Например:
public void commonMethod(Runnable methodToInvoke){
if() {
try { methodToInvoke.run() } finally { }
}
else {}
}
И вызовите его, передав3 извлеченных метода:
commonMethod(this::methodFoo);
commonMethod(this::methodBar);
commonMethod(this::methodFooBar);
2) если эти 3 метода находятся в разных классах: вводит интерфейс, который будут реализованы 3 классами, и заставит общий метод принять параметр этого интерфейса.
Например, с введенным интерфейсом Processing
:
public void commonMethod(Processing processing){
if() {
try { processing.doThat() } finally { }
}
else {}
}
И вызвать его, передав 3 реализации интерфейса Processing
:
commonMethod(foo);
commonMethod(bar);
commonMethod(fooBar);