使用 lambda / 函数式接口 实现策略模式 §
import java.util.function.Predicate;
public class Sample {
public static int totalValues(List<Integer> numbers,
Predicate<Integer> selector) {
int total = 0;
for (var number : numbers) {
if (selector.test(number)) {
total += number;
}
}
return total;
}
public static boolean isOdd(int number) {
return number % 2 != 0;
}
public static void main(String[] args) {
var numbers = List.of(1,2,3,4,5);
totalValues(numbers, Sample::isOdd);
totalValues(numbers, ignore -> true);
totalValues(numbers, number -> numeber % 2 == 0);
}
}