Ответ
Event Driven — это архитектурный подход, где система реагирует на события (изменения состояния, действия пользователя и т.д.) асинхронно. Вместо прямых вызовов компоненты общаются через события, что повышает масштабируемость и гибкость.
Пример на Go с использованием каналов:
package main
import (
"fmt"
"time"
)
func eventProducer(events chan<- string) {
for i := 0; i < 3; i++ {
events <- fmt.Sprintf("Event %d", i)
time.Sleep(1 * time.Second)
}
close(events)
}
func eventConsumer(events <-chan string) {
for event := range events {
fmt.Println("Received:", event)
}
}
func main() {
events := make(chan string)
go eventProducer(events)
eventConsumer(events)
}
Плюсы:
- Слабая связность компонентов
- Асинхронная обработка
- Легко масштабируется
Минусы:
- Сложнее отлаживать
- Нужно управлять порядком событий