Что такое паттерн Observer?

Middle
688 просмотров
AFK Offer AI

Observer — паттерн, при котором объект уведомляет подписчиков об изменениях. В Go реализуется через каналы или колбеки.

type EventBus struct {
    mu          sync.RWMutex
    subscribers map[string][]chan Event
}

func (eb *EventBus) Subscribe(topic string) <-chan Event { ch := make(chan Event, 10) eb.mu.Lock() eb.subscribers[topic] = append(eb.subscribers[topic], ch) eb.mu.Unlock() return ch }

func (eb *EventBus) Publish(topic string, event Event) { eb.mu.RLock() for _, ch := range eb.subscribers[topic] { ch <- event } eb.mu.RUnlock() }

Каналы — идеальный примитив для Observer в Go: подписчик читает из канала в своей горутине, publisher пишет. Используется в event-driven архитектурах, WebSocket-серверах, системах нотификаций.

Следующий вопрос

Что такое window function?