我有两段相似的代码:
void task1() {
init();
while(someCondition) {
doSomething();
}
shutdown();
}
void task2() {
while(someCondition) {
init();
doSomething();
shutdown();
}
}
我想避免代码重复,我认为可以通过使用功能方法来完成。 我想将循环和init / shutdown调用放在单独的函数中,然后链接它们的调用(不是Java 8 Function接口,更多伪代码):
Function setup(Function f){
init();
f();
shutdown();
}
Function loop(Function f){
while(someCondition) {
f();
}
}
然后我要像这样链接这些:
void task1() {
setup(loop(doSomething));
}
void task2() {
loop(setup(doSomething));
}
我想到了Java的Function接口中的compose / andThen,但是它们不合适,因为它们只将一个函数的返回值传递给下一个函数。有谁知道如何使用Java 8或其他方法来实现这一点?