Pattern di callback - confusione del valore di ritorno

3

Ho una classe ConstraintsResolver che risolve una coda di Constraint s. Questo viene fatto quando un oggetto ConstraintsResolver chiama meetConstraint() su Constraint uno.

La maggior parte delle implementazioni meetConstraint() ritorneranno immediatamente, quindi potrei semplicemente restituire un booleano, ma ce n'è almeno uno che bloccherà, il che significa che ho bisogno di implementare il pattern di callback.

Ho un'opzione per combinare entrambe le soluzioni oppure devo implementare solo il pattern di callback?

    
posta Skemelio 19.11.2018 - 21:10
fonte

2 risposte

4

Sembra che tu abbia un codice con natura sia sincrona che asincrona. Se è necessario combinarlo in modo pulito / organizzato, è possibile utilizzare il paradigma di programmazione reattiva. Controlla il pattern Osservabile.

Potresti anche raggiungere i tuoi obiettivi con strumenti più semplici come le promesse. (Nella libreria standard Java, sono chiamati Future e c'è anche un framework CompletableFuture correlato).

    
risposta data 20.11.2018 - 02:30
fonte
1

Mi sembra che tu non abbia bisogno del pattern di callback qui. Hai solo bisogno di discussioni.

Le risposte di sincronizzazione sembrano obbligatorie, dal momento che continuerai il processo dopo che riceve la risposta.

Ma non riesco a vedere cosa potrebbe migliorare una risposta asincrona. Ad ogni modo, aspetterai una risposta. Ad ogni modo, sei bloccato. Se tale blocco arresta altre attività, usa solo i thread.

I callback non sono usati per sbloccare i processi (per questo le risposte sincrone sono sufficienti). Vengono utilizzati solo quando un interactor può inviare dati di sorpresa. Per esempio, do un compito a un dipendente e gli do il mio numero di telefono, così può "richiamarmi" se succede qualcosa di brutto. Se no, non ho bisogno di saperlo.

Se aspetto che la sua chiamata continui il mio processo, non si tratta di un "back call", ma solo della risposta sincrona che stavo aspettando.

    
risposta data 22.11.2018 - 05:37
fonte

Leggi altre domande sui tag