Skip to content

Latest commit

 

History

History
48 lines (38 loc) · 1.75 KB

singleton.md

File metadata and controls

48 lines (38 loc) · 1.75 KB

Паттерн синглтон

Традиционный синглтон паттерн используется для решения кейсов, когда код должен быть упакован в классе.

class Singleton {
    private static instance: Singleton;
    private constructor() {
        // сделать что-нибудь...
    }
    static getInstance() {
        if (!Singleton.instance) {
            Singleton.instance = new Singleton();
            // ... здесь единожды выполняется инициализация ... 
        }
        return Singleton.instance;
    }
    someMethod() { }
}

let something = new Singleton() // Ошибка: конструктор 'Singleton' является приватным.

let instance = Singleton.getInstance() // сделать что-нибудь с экземпляром...

Однако, если вам не нужна ленивая инициализация, вы можете вместо этого просто использовать namespace:

namespace Singleton {
    // ... здесь единожды выполняется инициализация ...
    export function someMethod() { }
}
// Использование
Singleton.someMethod();

Предупреждение: Синглтон - это просто причудливое название для global

Для большинства проектов namespace можно заменить на module.

// someFile.ts
// ... здесь единожды выполняется инициализация ...
export function someMethod() { }

// Использование
import {someMethod} from "./someFile";