Skip to content

Commit 58d6323

Browse files
committed
Improve README for design patterns + initial refactoring
1 parent 7baa063 commit 58d6323

File tree

3 files changed

+51
-24
lines changed

3 files changed

+51
-24
lines changed

DesignPatterns/README.md

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,25 @@
44

55
This project explores various design patterns and their implementations in modern Java. It aims to provide developers with practical examples and best practices for using design patterns to create robust and maintainable code.
66

7-
[Check it out 🔍](src/main/java/pl/mperor/lab/java/Dummy.java)
7+
## Design Pattern Catalog 📚
8+
9+
### Behavioral Design Patterns 💪
10+
11+
- [Strategy](src/main/java/pl/mperor/lab/java/design/pattern/behavioral/strategy) 🎯
12+
- [Execute Around Method (EAM)](src/main/java/com/example/eam)
13+
14+
### Creational Design Patterns 🏭
15+
16+
- [Factory](src/main/java/pl/mperor/lab/java/design/pattern/creational/factory) 🏭
17+
- [Builder](src/main/java/pl/mperor/lab/java/design/pattern/creational/builder) 🏗️
18+
- [Singleton](src/main/java/pl/mperor/lab/java/design/pattern/creational/singleton) 1️⃣
19+
20+
### Structural Design Patterns 🎁
21+
22+
- [Adapter](src/main/java/pl/mperor/lab/java/design/pattern/structural/adapter) 🔌
23+
- [Bridge](src/main/java/pl/mperor/lab/java/design/pattern/structural/bridge) 🌉
24+
- [Composite](src/main/java/pl/mperor/lab/java/design/pattern/structural/composite) 🌿
25+
- [Decorator](src/main/java/pl/mperor/lab/java/design/pattern/structural/decorator) 🎨
26+
- [Facade](src/main/java/pl/mperor/lab/java/design/pattern/structural/facade) 🏢
27+
- [Flyweight](src/main/java/pl/mperor/lab/java/design/pattern/structural/flyweight) 🪶
28+
- [Proxy](src/main/java/pl/mperor/lab/java/design/pattern/structural/proxy) 🛡️
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
package pl.mperor.lab.java.design.pattern.behavioral.strategy;
2+
3+
import java.util.List;
4+
import java.util.function.Predicate;
5+
6+
public class MathUtils {
7+
8+
public static int totalValue(List<Integer> values) {
9+
return totalValue(values, _ -> true);
10+
}
11+
12+
public static int totalValue(List<Integer> values, Predicate<Integer> selector) {
13+
return values.stream()
14+
.filter(selector)
15+
.mapToInt(e -> e)
16+
.sum();
17+
}
18+
19+
public static boolean isEven(int number) {
20+
return number % 2 == 0;
21+
}
22+
23+
public static boolean isOdd(int number) {
24+
return !isEven(number);
25+
}
26+
}

DesignPatterns/src/test/java/pl/mperor/lab/java/design/pattern/behavioral/strategy/LightweightStrategyTest.java

Lines changed: 3 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -4,34 +4,14 @@
44
import org.junit.jupiter.api.Test;
55

66
import java.util.List;
7-
import java.util.function.Predicate;
87

98
public class LightweightStrategyTest {
109

1110
@Test
1211
public void testTotalValueStrategy() {
1312
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);
13+
Assertions.assertEquals(10, MathUtils.totalValue(values));
14+
Assertions.assertEquals(6, MathUtils.totalValue(values, MathUtils::isEven));
15+
Assertions.assertEquals(4, MathUtils.totalValue(values, MathUtils::isOdd));
3616
}
3717
}

0 commit comments

Comments
 (0)