Mediator giảm chaotic dependencies giữa objects bằng cách làm chúng communicate qua mediator object thay vì trực tiếp — từ many-to-many thành many-to-one. Ví dụ UI: thay vì các form components tham chiếu nhau trực tiếp, chúng communicate qua FormMediator quản lý validation và enable/disable logic.
Trong microservices: Message Broker (RabbitMQ, Kafka) là Mediator — service A không gọi service B trực tiếp mà publish message lên broker, broker route đến service B.
Khác Observer: Observer cho phép Subject notify Observers (biết có observers); Mediator giúp objects communicate mà không biết về nhau. Trong NestJS: EventEmitter2, CQRS CommandBus, EventBus là Mediator.
Lợi ích microservices:
- Loose coupling giữa services.
- Dễ scale từng service độc lập.
- Có thể add consumer mới mà không thay đổi producer.
Không dùng khi: Mediator trở thành 'God Object' biết quá nhiều — tạo single point of failure.