Pattern thuộc nhóm Behavioral Pattern (Hành vi)
#1. Problem & Motivation
Các đối tượng tương tác trực tiếp (nhiều-nhiều) gây rối rắm. Khi thay đổi một class, bạn phải sửa hàng loạt class khác.
#2. Định nghĩa
Mediator Pattern thay thế các kết nối trực tiếp bằng một đối tượng trung gian (Mediator) chịu trách nhiệm điều phối.
#3. Implementation
class ChatRoom implements ChatMediator {
public function sendMessage(string $msg, User $user) {
// Điều phối thông tin giữa các User
}
}
#4. Liên hệ Laravel
Event Dispatcher chính là một Mediator. Class Order không cần biết ai nghe sự kiện OrderPlaced, nó chỉ bắn event, Dispatcher điều phối đến các Listeners.
#5. Kết luận
Dùng Mediator khi bạn muốn giảm Coupling giữa các đối tượng trong một hệ thống phức tạp.