У меня есть два одинаковых фрагмента кода:
void task1() {
init();
while(someCondition) {
doSomething();
}
shutdown();
}
void task2() {
while(someCondition) {
init();
doSomething();
shutdown();
}
}
Я бы хотел избежать дублирования кода, и я подумал, что это можно сделать с помощью функционального подхода. Я хочу поместить вызовы l oop и init / shutdown в отдельные функции, а затем объединить их вызовы (не интерфейс функции Java 8, больше псевдокод):
Function setup(Function f){
init();
f();
shutdown();
}
Function loop(Function f){
while(someCondition) {
f();
}
}
Тогда Я хочу связать их так:
void task1() {
setup(loop(doSomething));
}
void task2() {
loop(setup(doSomething));
}
Я думал о compose / andThen в интерфейсе функций Java, но они не подходят, потому что они передают только возвращаемое значение одной функции к следующему. У кого-нибудь есть идеи, как это сделать с Java 8 или с другим подходом?