As formas oferecidas por cada linguagem de programação ao suporte de Callbacks são variadas, ou seja, podem ser implementadas como sub-rotinas, expressões lambdas, blocos de código, ponteiros de função, classes/objetos, dentre outros.

No caso da linguagem Java em suas versões anteriores a versão 8, Callbacks podem ser simuladas pela passagem de argumento/parâmetros como sendo uma instância (objeto) de classe ou interface. Neste caso, o receptor poderá receber um objeto que possua um ou mais métodos de Callback. Isso significa que um objeto pode ser visto como um conjunto de métodos de Callbacks bem como seus respectivos dados que deverão ser manipulados.

Em termos de padrões de software orientado a objeto, podemos dizer que o tipo deferred Callback está diretamente associado ao padrão de projeto denominado de Inversão de Controle (Inversion of Control).

O padrão de desenvolvimento de programas de computadores Inversion of Control é aquele onde a sequência (controle) de chamadas dos métodos é invertida em relação à programação tradicional, ou seja, ela não é determinada diretamente pelo programador.

Este controle é delegado a uma infraestrutura de software muitas vezes chamada de container ou a qualquer outro componente que possa tomar controle sobre a execução. Esta é uma característica muito comum a alguns frameworks como, por exemplo, JEE e o Android. Inclusive, essa característica foi batizada como princípio de hollywood pela engenharia de software onde a célebre frase ficou eternizada: “Don't call us, we'll call you” (“Não nos chame, nós chamaremos você”).

A seguir, veremos um exemplo em Java ilustrando o Callback síncrono e o assíncrono.

Copyright © 2016 AIEC.