Nel mio programma, ho una funzione di lunga durata da cui vorrei interagire con l'utente per vari motivi:
- Fornire aggiornamenti di stato ( "Download di file
/foo/bar.png
" ) - Visualizzazione degli avvisi ( "Caricamento file fallito, riproverò più tardi" )
- Chiedere l'input ( "Inserisci la password del tuo google drive" )
Il problema è, naturalmente, che questa funzione non sa come dovrebbe interagire con l'utente. Ad esempio, sarebbe privo di senso visualizzare i messaggi su stdout in un programma della GUI.
In caso di errori, la soluzione è ovvia: basta lanciare un'eccezione che verrà rilevata nel livello dell'interfaccia utente. Gli errori sono facili perché il lavoro del livello di servizio viene eseguito non appena viene lanciata l'eccezione. Ma che dire di cose come avvertimenti e input? Come faccio a colmare il divario tra il livello di servizio e l'utente?