MVCBr – Como usar Observer do Framework

“Observer” é inigmático. Você nem esperava e chega aquela notícia que alguma coisa aconteceu. A janela estava lá mostrando uma fila de clientes em atendimento, mas de repente alguém gritou que chegou um cliente com preferência no atendimento e a fila precisa ser reorganizada para acomodar aquele cliente com preferência… Certamente você já viu um cenário deste ou participou de uma fila destas.
Vejamos os atores para o cenário: de uma lado existe alguém pronto para receber a informação de necessidade de reorganizar a fila, ele fica lá só esperando alguém gritar – de outro tem um lá na porta da instituição com sede de saber novidades para sair falando para todo mundo.

Trabalhar com “Observer” é em outras palavras montar uma rede de informação de notícias. Existe um ator que assina o serviço de notícia e outro que distribui as notícias – é isto que um “patterns observer” faz.

Olhando para o MVCBr, o primeiro passo é assinar o serviço de notícias (aquele que fica esperando uma notícia para tomar uma ação):

[code]
uses MVCBr.Observable;

… on form show
// assinar o serviço de notícias
TMVCBrObservable.subscribe( form1, ‘reorganizar.fila’,
procedure (json:TJsonValue)
var nQtde:integer;
begin
nQtde = json.getvalue<integer>(‘qtde’);
abrirVagaNaFila(nQtde);
end);

…. on destroy
// retirar a assinatura do serviço
TMVCBrObservable.UnSubscribe(form1);

[/code]

Do outro lado esta o distribuidor de notícias, aquele que grita que precisa entrar um cliente preferêncial na fila:

[code]
uses MVCBr.Observable;
..

// em algum lugar em que a notícia nasce
TMVCBrObservable.send( ‘reorganizar.fila’, TJsonObject.parse( ‘{"qtde":1}’ ) );

[/code]

Quando o “observer” recebe a notícia, ele com sede de espalhar a notícia, sai procurando todo mundo que se candidatou para receber aquele serviço… e pá… manda a notícia uma-a-uma para cada assinante.

Aproveitem: git

Deixe uma resposta

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *