Skip to content

Commit b607d1e

Browse files
committed
Add example of lightweight strategy
1 parent 0dc3327 commit b607d1e

File tree

1 file changed

+37
-0
lines changed

1 file changed

+37
-0
lines changed
Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
package pl.mperor.lab.java.design.pattern.behavioral.strategy;
2+
3+
import org.junit.jupiter.api.Assertions;
4+
import org.junit.jupiter.api.Test;
5+
6+
import java.util.List;
7+
import java.util.function.Predicate;
8+
9+
public class LightweightStrategyTest {
10+
11+
@Test
12+
public void testTotalValueStrategy() {
13+
var values = List.of(1, 2, 3, 4);
14+
Assertions.assertEquals(10, totalValue(values));
15+
Assertions.assertEquals(6, totalValue(values, LightweightStrategyTest::isEven));
16+
Assertions.assertEquals(4, totalValue(values, LightweightStrategyTest::isOdd));
17+
}
18+
19+
public static int totalValue(List<Integer> values) {
20+
return totalValue(values, _ -> true);
21+
}
22+
23+
public static int totalValue(List<Integer> values, Predicate<Integer> selector) {
24+
return values.stream()
25+
.filter(selector)
26+
.mapToInt(e -> e)
27+
.sum();
28+
}
29+
30+
public static boolean isEven(int number) {
31+
return number % 2 == 0;
32+
}
33+
34+
public static boolean isOdd(int number) {
35+
return !isEven(number);
36+
}
37+
}

0 commit comments

Comments
 (0)