Итак, я хотел повторно использовать некоторые функции, такие как try catch
и некоторые другие общие функции, используемые моим приложением. Мне было интересно, хорошо ли этот подход. Или, если есть какой-то другой подход, это было бы здорово. Я хочу узнать, как я могу это реализовать.Какой шаблон использовать при повторном использовании функций
Это функция обратного вызова, которая будет использоваться службами.
public interface ClientOperation <T>{
T doAction(SomeObject someObject);
}
И это интерфейс, который будет выполнять функцию обратного вызова ClientOperation
public interface Executor {
<T> T doTask(ClientOperation<T> operation);
}
Класс реализации Executor
public class ExecutorImpl implements Executor {
public <T> T doTask(ClientOperation<T> operation) {
T response = null;
/*
DO SOMETHING FIRST - USED BY ALL CLASSES
*/
try {
response = operation.doAction(someObject);
} catch (SomeException e) {
/*
DO SOME SERIOUS STUFF
*/
} catch (Exception e) {
LOGGER.error(e.getMessage());
throw new SystemException(e.getMessage(), e);
}
return response;
}
}
сервис, который делает что-то и выполняет функцию обратного вызова
public void addSomething(final Secret secret)
throws UnauthorizedActionException, InvalidSecretKeyException {
executorService.doTask(new ClientOperation<Response>() {
public Response doAction(SomeObject someObject) {
//DO STUFF ON THIS
return template.write(secret.getPath(),
secret.getSecretValue());
}
});
}
Отлично! Спасибо за ответ. Я также думаю, что метод шаблона также ограничивает конкретные подклассы одним методом реализации. –