Java обычный блок Try / finally вокруг различных блоков кода - стиль кода - PullRequest
0 голосов
/ 12 октября 2018

У меня есть такой же if() { try { < SOME CODE > } finally { } } else {} блок, который я использую в 3 методах.

Единственное, что отличается в каждом методе - это .

Существуют ли какие-либо шаблоны кодирования, которые я могу использовать для "СУШКИ" моего кода?В идеале хотелось бы извлечь if() { try { } finally { } } else {} в некоторую общую структуру и передать ей .Это возможно в Java?

Спасибо

1 Ответ

0 голосов
/ 12 октября 2018

Вы можете ввести общий метод для выделения общей части.

Затем, в соответствии с вашими требованиями, вы можете сделать:

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);
...