Skip to content

Latest commit

 

History

History
80 lines (54 loc) · 2.58 KB

singleton.md

File metadata and controls

80 lines (54 loc) · 2.58 KB

El patron Singleton

Los Singletons son clases que solo pueden ser instanciadas una vez y pueden ser accedidas globalmente. Esta única instancia puede ser compartida en toda nuestra aplicación.

Singleton es un patrón de diseño creacional que nos permite asegurarnos de que una clase tenga una única instancia, a la vez que proporciona un punto de acceso global a dicha instancia.

El patron singleton es útil cuando necesitamos controlar el acceso a un recurso compartido, como una conexión a una base de datos o un archivo de configuración y para esto debemos manejar una única instancia de la clase..

Cómo debería ser un singleton:

  • getInstance método que devuelve el valor de la instancia

Usar el patrón Singleton nos brinda ciertas ventajas:

  • Control de acceso: Puedes tener la certeza de que una clase tiene una única instancia.
  • Punto de acceso global: Obtienes un punto de acceso global a dicha instancia.
  • Inicialización bajo demanda: El objeto Singleton solo se inicializa cuando se requiere por primera vez.

Ejemplo

interface Singleton {
  getInstance(): Singleton;
}

class Counter implements Singleton {
  private instance: Counter;

  private counter: number = 0;

  constructor() {
    this.instance = this;

    if (this.instance) {
      throw new Error('You can only create one instance!');
    }

  }

  getInstance(): Singleton {
    return this;
  }

  getCount() {
    return this.counter;
  }

  increment() {
    return ++this.counter;
  }

  decrement() {
    return --this.counter;
  }
}

const counter1 = new Counter();
const counter2 = new Counter();
// Error: You can only create one instance!

Output:

counter1 0
Error: You can only create one instance!

Ejemplo en vivo

Ejemplo en vivo

Ver un ejemplo de código

Ejemplo vivo