🧭Mediator Pattern – Overview
🧠 Concept
The Mediator Pattern defines an object (Mediator) that centralizes communication between multiple objects (called Colleagues) so they don’t talk to each other directly.
👉 Promotes loose coupling by preventing classes from referring to each other explicitly.
🧱 Key Roles
Mediator
Defines how objects (colleagues) interact.
ConcreteMediator
Implements communication logic between colleagues.
Colleague
Components that communicate through the mediator.
ConcreteColleague
Actual components that send/receive messages via the mediator.
💻 Java Example – Chat Room (Mediator)
// Mediator interface
interface ChatMediator {
void sendMessage(String message, User sender);
void addUser(User user);
}
// Concrete Mediator
class ChatRoom implements ChatMediator {
private List<User> users = new ArrayList<>();
public void addUser(User user) {
users.add(user);
}
public void sendMessage(String message, User sender) {
for (User user : users) {
if (user != sender) {
user.receive(message);
}
}
}
}
// Colleague
abstract class User {
protected ChatMediator mediator;
protected String name;
public User(ChatMediator mediator, String name) {
this.mediator = mediator;
this.name = name;
}
abstract void send(String message);
abstract void receive(String message);
}
// Concrete Colleague
class ChatUser extends User {
public ChatUser(ChatMediator mediator, String name) {
super(mediator, name);
}
void send(String message) {
System.out.println(name + " sends: " + message);
mediator.sendMessage(message, this);
}
void receive(String message) {
System.out.println(name + " receives: " + message);
}
}✅ Usage Example:
Output:
🧠 Flow Summary (Step-by-Step)
1️⃣
Alice.send("Hi")
Mediator forwards message
Bob + Charlie receive
2️⃣
Bob.send("Hello")
Mediator forwards message
Alice + Charlie receive
💬 Note: Alice and Bob don’t know each other directly — they only know the ChatRoom.
🪜 Summary
Centralizes communication logic → reduces dependencies between objects.
Each object only depends on the Mediator, not on other objects.
Easier to add new participants without changing existing ones.
Promotes loose coupling and single responsibility.
📡 Real-world Analogy
🗣️ Group Chat / Air Traffic Control
In a chat room, users don’t message each other directly — messages go through the chat server (mediator).
In air traffic control, planes (colleagues) don’t talk to each other — they communicate only through the control tower (mediator).
🧭 TL;DR
Mediator Pattern = Communication Hub Objects stop talking directly and instead talk through one central mediator.
Last updated