Синглтон (Одиночка)
Суть паттерна "Синглтон" и его реализация на TypeScript
Паттерн Синглтон (Одиночка) пригодится в тех случаях, когда необходимо гарантировать, что экземпляр объекта будет единственным в приложении. То есть: ЕСЛИ уже есть созданный экземпляр класса ТО отдаём ссылку на него ИНАЧЕ инициализируем создание объекта и только после этого возвращаем ссылку.
Часто важно иметь в приложении один источник истины. К примеру, вы пишете игру, которая завязана на время. Со временем взаимодействуют много сервисов: игровые объекты, логгер, роутер и так далее. Нужно убедиться, что каждый из сервисов взаимодействует с одним и тем же инстансом таймера.
Добиться этого можно на уровне архитектуры самого объекта, сделав конструктор приватным.
class GameTimer {
private startTime: Date;
private static gameTimer: GameTimer;
// делаем конструктор приватным
private constructor() {
// в момент создания объекта будет выставлено время начала игры
this.startTime = new Date();
}
public getStartTime() {
return this.startTime;
}
// публичный статический метод, которым будут пользоваться потребители
// чтобы получить объект таймера
public static getGameTimer() {
// гарантия того, что объект будет проинициализирован только 1 раз
if (!GameTimer.gameTimer) {
GameTimer.gameTimer = new GameTimer();
}
return GameTimer.gameTimer;
}
}
Комментарии