6 January 2019, 00:00

the singleton pattern

Name: Singleton

Type: Creational

Use when you want to:

  • To manage a shared resource.
  • To read global state.

A quick note:

There aren't a ton of reasons to ever use a singleton. If however you want global information to flow into the singleton and not back into the app again, then it is a acceptable solution. A logger is a good example of this.

From Wikipedia:

In software engineering, the singleton pattern is a software design pattern that restricts the instantiation of a class to one object. This is useful when exactly one object is needed to coordinate actions across the system.

Real World Example:

There can only be one monarch of a country at a time. The same monarch has to be brought to action, whenever duty calls. The monarch here is singleton.

Main Purpose:

Ensures that only one object of a particular class is ever created.

Typescript Code Example:

class Monarch {

    private static _instance:Monarch = new Monarch();

    private _duties = 0;

    constructor() {
            throw new Error("Error: Instantiation failed: Use Monarch.getInstance() instead of new.");
        Monarch._instance = this;

    public static getInstance():Monarch
        return Monarch._instance;

    public addDuties(value:number):void
        this._duties += value;

    public dutyTotal() { 
        return this._duties;


const queen = Monarch.getInstance();


const king = new Monarch(); // will not work

Full Example:

← The Prototype Pattern
The Builder Pattern →