Construtor

Construtor privado e Singleton

Definição

Ao tornar o construtor da classe privado, isso inviabiliza a criação de novas instâncias fora dessa dessa:

private constructor(...) {}

Tal conceito é utilizado no padrão de projeto Singleton que sugere a criação de uma instância única em toda a aplicação.

Esse padrão é amplamente usado para realizar a conexão com o banco de dados, pois em aplicações reais o número de conexões são limitadas devido ao alto custo para criá-las.

Exemplo

// Singleton
export class Database {
  private static database: Database;
 
  private constructor(
    private host: string,
    private user: string,
    private password: string,
  ) {}
 
  connect(): void {
    console.log(`Connection: ${this.host}, ${this.user}, ${this.password}`);
  }
 
  // Method factory
  static getDatabase(host: string, user: string, password: string): Database {
    if (!Database.database) {
      Database.database = new Database(host, user, password);
    }
 
    return Database.database;
  }
}
 
const db1 = Database.getDatabase('localhost', 'root', 'root');
db1.connect();
 
const db2 = Database.getDatabase('localhost', 'root', 'root');
db2.connect();
 
console.log(db1 === db2); // true