
Deb uma estrutura de ônibus de evento para Delphi
O Delphi Event Bus (para Short Deb) é uma estrutura de barramento de eventos de publicação/inscrição para a plataforma Delphi.
O DEB foi projetado para dissociar diferentes peças/camadas do seu aplicativo, enquanto ainda permite que elas se comuniquem com eficiência. Foi inspirado pela estrutura Eventbus para a plataforma Android.

Dê uma estrela
Por favor, "estrela" este projeto no Github! Custa nada além de ajuda a referir o código

Características
- Fácil e limpo: DelphievEntbus é super fácil de aprender e usar porque respeita os princípios de design Kiss e "Convention Over Configuration". Ao usar a instância padrão do Teventbus, você pode começar imediatamente à entrega e receber eventos
- Projetado para dissociar diferentes peças/camadas do seu aplicativo
- Conduzido pelo evento
- API baseada em atributos: basta colocar o atributo de assinatura no seu método de assinante, você pode receber um evento específico
- Apoie o modo de entrega diferente: especificando o atributo TTHReadMode no inscrição, você pode optar por entregar o evento no thread principal ou em um plano de fundo, independentemente de um evento publicado. O EventBus gerenciará a sincronização do thread
- Unidade testada
- Tópico seguro
Mostre -me o código
Eventos
1. Define eventos:
IEvent = interface (IInterface)
[ ' {3522E1C5-547F-4AB6-A799-5B3D3574D2FA} ' ]
// additional information here
end ; 2. assinantes de preparos:
- Declare seu método de assinatura:
[Subscribe]
procedure OnEvent (AEvent: IAnyTypeOfEvent);
begin
// manage the event
end ;
GlobalEventBus.RegisterSubscriberForEvents(Self);
3. Eventos post:
GlobalEventBus.post(LEvent);
Canais
1. CANIAL DEFINE:
const MY_CHANNEL = ' MYCHANNEL '
2. assinantes de preparos:
- Declare seu método de assinatura:
[Channel(MY_CHANNEL)]
procedure OnMessage (AMsg: string);
begin
// manage the message
end ;
GlobalEventBus.RegisterSubscriberForChannels(Self);
3. Evento post no canal:
GlobalEventBus.post(MY_CHANNEL, ' My Message ' );
Apoiar
- Deb é uma estrutura 100% ObjectPascal, por isso funciona na VCL e FIREMONKEY
- Funciona com Delphi2010 e Major
- Funciona com a versão mais recente Alexandria
Notas de liberação
Deb 2.1
- NOVO! Introduzido pool de threads dedicado para encadeamento de deb.
Deb 2.0
- NOVO! Adicionado novo mecanismo baseado em interface para declarar e lidar com eventos!
- NOVO! Canais adicionados para eventos simples baseados em cordas
- NOVO! Removido CloneEvent interno removido porque agora os eventos são baseados em interface!
Quebrando mudanças
- Um método de assinante pode ter apenas 1 parâmetro que é um IInterface ou descendentes
- O método eventbus.post pode aceitar apenas uma interface como parâmetro agora
Licença
Copyright 2016-2022 Daniele Spinetti
Licenciado sob a licença Apache, versão 2.0 (a "licença"); Você não pode usar esse arquivo, exceto em conformidade com a licença. Você pode obter uma cópia da licença em
http://www.apache.org/license/license-2.0
A menos que exigido pela lei aplicável ou acordada por escrito, o software distribuído pela licença é distribuído "como está", sem garantias ou condições de qualquer tipo, expressa ou implícita. Consulte a licença para o idioma específico que rege as permissões e limitações sob a licença.