3.0.4 • Published 4 years ago

@devim-front/service v3.0.4

Weekly downloads
28
License
ISC
Repository
github
Last release
4 years ago

Devim Front: Service

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

Установка

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

npm i -S @devim-front/service

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

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

Сервис

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

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

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

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

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

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

3.0.4

4 years ago

3.0.3

4 years ago

3.0.2

4 years ago

3.0.1

5 years ago

3.0.0

5 years ago

2.1.4

5 years ago

2.1.3

5 years ago

2.1.2

5 years ago

2.1.1

5 years ago

2.1.0

5 years ago

2.0.0

5 years ago

1.0.4

5 years ago

1.0.3

5 years ago

1.0.2

5 years ago

1.0.1

5 years ago