В предыдущей статье мы узнали, что такое программирование, управляемое событиями, и как вы можете использовать его для рефакторинга кода. Мы также узнали обстоятельства, при которых вы можете использовать подход, управляемый событиями, вместо других традиционных подходов. Я настоятельно рекомендую вам сначала прочитать это.
В этой статье мы узнаем, как событийно-управляемые системы строятся с нуля. Мы будем использовать JavaScript
для примеров, но принципы все еще применимы к другим языкам.
В любой Системе событий должен быть определенный набор функций:
1. Функция регистрации
Эта функция обычно определяется методом on()
. Он регистрирует прослушиватель событий, который является анонимной функцией или функцией обратного вызова.
Слушатель событий - это функция, которая определяет действия, которые должны быть предприняты после отправки события в любой заданной точке вашей программы.
Метод on()
может также принимать необязательный параметр target context
, который определяет контекст, из которого вызывается слушатель.
Обычная форма функции регистрации событий выглядит следующим образом:
EventEmitter.on(event, listener, target|context?)
Создать наш on()
метод очень просто. Нам просто нужно отправить событие, и оно является слушателем массива или объекта, который мы будем использовать во всем объекте Event Emitter.
Создайте файл EventEmitter.js
и добавьте следующий код:
2. Функция отмены регистрации
Этот метод обычно определяется как метод off (). По сути, он удаляет прослушиватели событий для данного события из списка зарегистрированных прослушивателей событий.
Я добавил вспомогательный метод, чтобы уменьшить дублирование, поскольку мы добавляем больше методов в генератор событий.
3. Диспетчерская функция
Чтобы запускать / отправлять события, мы должны вызывать слушателей, прикрепленных к данному событию, а также отслеживать их.
Сначала добавьте массив fireEvents
в класс EventEmitter. Этот массив отслеживает все отправленные события.
firedEvents: [],
В следующем фрагменте кода показана реализация функции диспетчеризации:
4. Функция очистки
Функция очистки просто удаляет как зарегистрированных, так и запущенных слушателей. Он эффективно сбрасывает все обратно к значениям по умолчанию.
Обычно обозначается как clear()
.
Вывод
Теперь у нас есть простой, но эффективный менеджер событий, который поможет вам очистить код. В этом руководстве представлены стандартные блоки большинства генераторов событий в NodeJs, Laravel и многих других.
Генератор событий похож на реального менеджера событий, который гарантирует, что различные события, запланированные для календаря, хорошо организованы с нужными людьми (слушателями / обработчиками) и происходят в нужном месте ( цель / контекст).
В следующем уроке мы проведем рефакторинг игры и покажем, как мы можем использовать этот класс для рефакторинга части кода в созданной нами маленькой игре.
Вы можете получить полный код простого пакета NPM, который я построил здесь. Не стесняйтесь вносить свой вклад.
Вам нужно нанять лучших разработчиков? Поговорите с Andela, чтобы помочь вам масштабироваться.
Вы хотите ускорить свою карьеру в качестве разработчика? В настоящее время Андела нанимает старших разработчиков. Подать заявку сейчас.