public EventsMediator(AppleMessageReceiver appleMessageReceiver,
                       MicrosoftMessageSender microsoftMessageSender)
 {
     _appleMessageReceiver   = appleMessageReceiver;
     _microsoftMessageSender = microsoftMessageSender;
     _microsoftMessageSender.MessageEvent += OnMessageReceived;
 }
 protected void Dispose(bool disposing)
 {
     if (!_disposed && disposing)
     {
         _microsoftMessageSender.MessageEvent -= OnMessageReceived;
         _microsoftMessageSender = null;
     }
     _disposed = true;
 }
        static void Main(string[] args)
        {
            MicrosoftMessageSender messageSender   = new MicrosoftMessageSender();
            AppleMessageReceiver   messageReceiver = new AppleMessageReceiver();
            EventsMediator         eventsMediator  = new EventsMediator(messageReceiver, messageSender);

            messageSender.RaiseEvent("Hello world!");
            eventsMediator.Dispose();

            Console.WriteLine(messageReceiver.Message);
            Console.ReadKey();
        }