Uma implementação básica do padrão de design Mediator usado para promover o desacoplamento entre diferentes sistemas, conforme descrito aqui.
Crie uma instância da classe MessageService quando seu aplicativo for iniciado pela primeira vez. Então, ao criar seus sistemas, injete a instância MessageService como uma dependência. Os sistemas podem então assinar um tipo de mensagem específico, fornecendo um retorno de chamada de função e o tipo de mensagem:
_messageService . Subscribe ( ApplicationStarted , MessageType . ApplicationStarted ) ;
Para enviar mensagens entre sistemas basta enviar uma IMessage para o MessageService:
_messageService . SendMessage ( new EmptyMessage ( MessageType . ApplicationStarted ) ) ;
Na função de retorno de chamada de um sistema inscrito, o IMessage pode ser convertido em qualquer tipo de dados que seu sistema exija:
private void ReceiveStringMessage ( IMessage obj )
{
StringMessage msg = ( StringMessage ) obj ;
Debug . Log ( "Receive message: " + msg . String )
}
Tipos de mensagens adicionais podem ser construídos definindo mais valores na enumeração MessageType e também criando classes que herdam de IMessage.