Skip to content

devim-front/service

Repository files navigation

Devim Front: Service

Содержит реализацию шаблона проектирования "сервис" и его вариации.

Установка

Подключите этот пакет в зависимости:

npm i -S @devim-front/service

Общие концепции

Перед тем, как описывать API библиотеки, следует сказать пару слов о сервисах и условиях их применений.

Сервис

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

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

Поскольку сервис хранит своё промежуточное состояние - раз, - и, два, зависит от других сервисов, простое удаление экземпляра его класса чревато побочными эффектами и утечками памяти. Чтобы решить эту проблему, у каждого сервиса есть метод dispose, который следует вызвать перед уничтожением экземпляра. При написании собственного сервиса в этом методе следует освободить все ресурсы занятые ресурсы, отписаться ото всех событий и вызвать методы dispose у всех вложенных экземпляров, если такие есть.

Чтобы один сервис мог реагировать на изменение состояния другого сервиса, используется механизм событий. У каждого экземпляра есть методы on, off и emit, полностью аналогичные соответствующим методам класса EventEmitter из API NodeJS. По умолчанию сервис умеет генерировать лишь событие dispose, уведомляющее, что экземпляр сервиса готовится к удалению. Сам же метод dispose удаляет все подписавшиеся на экземпляр обработчики, поэтому не нужно каждый раз делать этого вручную.

Глобально сервисы делятся на два типа: свободные и одиночные.

Документация находится в разработке.

About

Содержит реализацию шаблона проектирования 'сервис' и его вариации.

Resources

Stars

Watchers

Forks

Packages

No packages published