Puoi fare riferimento alla funzione di callback come API?

0

Il design di un sistema è disaccoppiato in due livelli, come il livello A e il livello B. L'interazione tra il livello A e il livello B avviene tramite un'interfaccia esposta dal livello B sotto forma di un'API. Questa interazione ha un modello di progettazione asincrona. Il livello A registra una funzione di callback con l'API del livello B. Ora si può tecnicamente fare riferimento alla funzione di callback come esposta dal layer A e fare riferimento ad essa come API del layer A?

    
posta user1302884 24.03.2015 - 14:34
fonte

1 risposta

1

Normalmente, no. Il callback è parte dell'API esposta dal layer B.

L'API del Layer B definisce il modulo (prototipo) del callback, l'API del Layer B definisce le funzioni da registrare e annullare la registrazione del callback, e Layer B definisce le condizioni in base alle quali verrà richiamato il callback. Inoltre, poiché il callback viene registrato, funzionerà anche se non è esposto pubblicamente dal Layer A. (Il callback può essere un metodo privato dell'oggetto che implementa il Layer A.) Pertanto, è totalmente, completamente, senza dubbio, parte dell'API di Layer B.

Ora, se il Layer A decide di anche pubblicamente esporre il callback, allora diventa anche parte dell'API del Layer A, ma è contorto, e probabilmente inutile. Le probabilità che un terzo Layer X lo trovi utile per invocare la callback di A come parte dell'API pubblica di A sono molto ridotte. In effetti, anche in un'occasione così improbabile, eviterei comunque che il Layer X invochi la richiamata, perché causerebbe confusione. Avrei A esporre un metodo completamente separato per questo.

    
risposta data 24.03.2015 - 16:28
fonte