Sobes.tech
Junior — Middle

Czy może Pan/Pani wyjaśnić zasadę działania podejścia opartego na zdarzeniach i jak jest ono wykorzystywane w programowaniu?

sobes.tech AI

Odpowiedź od AI

Podejście oparte na zdarzeniach (event-driven) zakłada, że program reaguje na określone zdarzenia: zmiany stanu, działania użytkownika, wiadomości itp. Zamiast wykonywać kod sekwencyjnie, logika jest zbudowana wokół obsługi tych zdarzeń.

W programowaniu jest to realizowane przez generowanie zdarzeń (emit) i subskrybowanie ich (subscribe/listen). Gdy zdarzenie wystąpi, wywoływane są odpowiednie obsługiwacze.

W Go, podejście to często realizuje się za pomocą kanałów (channels) i gorutyn. Na przykład, jedna gorutyna może wysyłać zdarzenia do kanału, a inna słucha tego kanału i reaguje na zdarzenia.

Przykład:

package main

import (
    "fmt"
    "time"
)

func eventProducer(events chan<- string) {
    for i := 1; i <= 5; i++ {
        events <- fmt.Sprintf("Zdarzenie %d", i)
        time.Sleep(time.Second)
    }
    close(events)
}

func eventConsumer(events <-chan string) {
    for event := range events {
        fmt.Println("Przetwarzanie", event)
    }
}

func main() {
    events := make(chan string)
    go eventProducer(events)
    eventConsumer(events)
}

Takie podejście zwiększa elastyczność i skalowalność aplikacji, szczególnie w systemach z asynchronicznym przetwarzaniem danych.