В предыдущей статье мы узнали, что такое программирование, управляемое событиями, и как вы можете использовать его для рефакторинга кода. Мы также узнали обстоятельства, при которых вы можете использовать подход, управляемый событиями, вместо других традиционных подходов. Я настоятельно рекомендую вам сначала прочитать это.

В этой статье мы узнаем, как событийно-управляемые системы строятся с нуля. Мы будем использовать 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, чтобы помочь вам масштабироваться.
Вы хотите ускорить свою карьеру в качестве разработчика? В настоящее время Андела нанимает старших разработчиков. Подать заявку сейчас.