Una implementación básica del patrón de diseño Mediator que se utiliza para promover el desacoplamiento entre diferentes sistemas, como se describe aquí.
Cree una instancia de la clase MessageService cuando se inicie su aplicación por primera vez. Luego, al crear sus sistemas, inyecte la instancia de MessageService como una dependencia. Luego, los sistemas pueden suscribirse a un tipo de mensaje específico proporcionando una devolución de llamada de función y el tipo de mensaje:
_messageService . Subscribe ( ApplicationStarted , MessageType . ApplicationStarted ) ;
Para enviar mensajes entre sistemas, simplemente necesita enviar un IMessage al MessageService:
_messageService . SendMessage ( new EmptyMessage ( MessageType . ApplicationStarted ) ) ;
En la función de devolución de llamada de un sistema suscrito, el IMessage se puede convertir en cualquier tipo de datos que requiera su sistema:
private void ReceiveStringMessage ( IMessage obj )
{
StringMessage msg = ( StringMessage ) obj ;
Debug . Log ( "Receive message: " + msg . String )
}
Se pueden construir tipos de mensajes adicionales definiendo más valores en la enumeración MessageType y también creando clases que hereden de IMessage.