Fundamental Node.js design patterns

Когда мы говорим о шаблонах проектирования, то в первую очередь речь идёт о синглтонах, обсерверах и фабриках. Но в этой статье мы краткой затронем так же темы: внедрение зависимостей и middleware (можно перевести как посредник).

Что такое шаблон проектирования ?

Шаблон проектирования – переиспользуемое решение для наиболее общих проблем.

Синглтоны

Синглтоны это классы которые имеют лишь одного представителя. Создать синглтон в Node.js довольно просто, при помощи всем известной инструкции require:

Неважно сколько раз вы напишите require, он будет существовать в одном единственном варианте:

Observers (наблюдатели)

Объект содержит несколько “наблюдателей” и автоматически информирует их о своих изменениях. Для внедрения “наблюдателя” приходит на помощь встроенный модуль EventEmitter.

Мы только что сделали это, присвоили объекту наблюдателя. Теперь что бы завершить пример, давайте добавим немного функционала, каноничный “Hello world” подойдёт.

Всё теперь наш объект может отправлять событие “hello”.

Фабрики

Шаблон фабрики подразумевает, что мы для создания объектов строим отдельный механизм. Этот шаблон может снизить сложность кода, если создание объекта подразумевает множество условий.

Фабрики кроме того облегчают тестирование, так как мы можете внедрить зависимость модулей на этапе создания объекта.

Внедрение зависимости

Внедрение зависимостей – шаблон проектирования когда в объект внедряются одно или несколько зависимостей.

В этом примере мы создадим модель UserModel и внедрим зависимость от базы данных.

Теперь мы можем создать объект на основании описанного класса.

Это существенно упрощает тестирование, для юнит-тестов вы можете подставить поддельные данные о db.

Middlewares (посредники) / pipelines

Посредник – это мощный и в то же время простой способ писать приложения.

Проще говоря ваш middleware добавляется в общий список посредников. И что же происходит когда запрос достигает сервера:

Никакой магии ваши middleware запускаются одно за другим, по очереди.

Потоки

Представьте что потоки, это огромные трубопроводы которые пропускают огромные объёмы данных, причём не важно какого типа, объекты или просто байты.

Эта статья является переводом

Leave a Reply

Your email address will not be published. Required fields are marked *