Add mediator design pattern with test case (#58) · mperor/JavaLab@d6d55eb · GitHub
Skip to content

Commit d6d55eb

Browse files
authored
Add mediator design pattern with test case (#58)
1 parent 6ad9c5f commit d6d55eb

4 files changed

Lines changed: 65 additions & 0 deletions

File tree

‎DesignPatterns/README.md‎

Lines changed: 1 addition & 0 deletions
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package pl.mperor.lab.java.design.pattern.behavioral.mediator;
2+
3+
import java.util.ArrayList;
4+
import java.util.List;
5+
import java.util.function.Predicate;
6+
7+
class ChatRoom {
8+
9+
private final List<ChatUser> users = new ArrayList<>();
10+
11+
void addUser(ChatUser user) {
12+
users.add(user);
13+
}
14+
15+
void sendMessage(String message, ChatUser sender) {
16+
users.stream()
17+
.filter(Predicate.not(sender::equals))
18+
.forEach(user -> user.receive(message));
19+
}
20+
}
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package pl.mperor.lab.java.design.pattern.behavioral.mediator;
2+
3+
record ChatUser(ChatRoom mediator, String name) {
4+
5+
void send(String message) {
6+
System.out.println(name + " sends: " + message);
7+
mediator.sendMessage(message, this);
8+
}
9+
10+
void receive(String message) {
11+
System.out.println(name + " received: " + message);
12+
}
13+
}
Lines changed: 31 additions & 0 deletions

0 commit comments

Comments
 (0)