Sobes.tech
Junior — Middle

Puteți explica principiul de funcționare al abordării bazate pe evenimente și cum este utilizată în programare?

sobes.tech AI

Răspuns de la AI

Abordarea bazată pe evenimente (event-driven) presupune că programul răspunde la anumite evenimente: schimbări de stare, acțiuni ale utilizatorului, mesaje etc. În loc să execute codul secvențial, logica este construită în jurul procesării acestor evenimente.

În programare, acest lucru se realizează prin generarea de evenimente (emit) și abonarea la ele (subscribe/listen). Când are loc un eveniment, sunt apelate handler-ele corespunzătoare.

În Go, această abordare este adesea implementată folosind canale (channels) și goroutines. De exemplu, o goroutine poate trimite evenimente într-un canal, iar alta poate asculta acel canal și reacționa la evenimente.

Exemplu:

package main

import (
    "fmt"
    "time"
)

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

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

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

Această abordare crește flexibilitatea și scalabilitatea aplicațiilor, mai ales în sistemele cu procesare asincronă a datelor.