Шрифт:
Чтобы на самом деде посылать события, мы обновим метод Car.Accelerate так, чтобы он осуществлял "проход" по соединениям, указанным в ArrayList, и при необходимости выдавал подходящее сообщение (обратите внимание на то, что теперь в классе Car есть член-переменная carIsDead логического типа для представления состояния двигателя машины).
Вот подходящий программный код клиента, в котором используется интерфейс обратного вызова для отслеживания событий Car.
На рис. 8.1 показан конечный результат работы этого основанного на интерфейсе протокола событий.
Рис. 8.1. Основанный на интерфейсе протокол событий
Обратите внимание на то, что метод Unadvise позволяет вызывающей стороне селективно отключаться от источника событий. Здесь перед выходом из Main вызывается Unadvise, хотя, строго говоря, это и не обязательно. Но предположим, что приложение должно зарегистрировать два приемника, динамически отключить их по очереди в процессе выполнения, а затем продолжить работу.