Patrón de diseño que asegura que una clase tenga solo una instancia controlada en todo el programa.
Útil para administrar recursos compartidos como conexiones de base de datos o configuraciones globales.
// Patrón Singleton en TypeScript class Database { private static instance: Database; private connection: any; // Constructor privado - no se puede usar 'new' private constructor() { console.log('Conectando a la base de datos...'); this.connection = this.connect(); } // Punto de acceso único public static getInstance(): Database { if (!Database.instance) { Database.instance = new Database(); } return Database.instance; } private connect() { return { /* conexión */ }; } public query(sql: string) { return this.connection.query(sql); } } // Uso const db1 = Database.getInstance(); const db2 = Database.getInstance(); console.log(db1 === db2); // true - misma instancia // Singleton en módulos ES6 (más simple) // database.ts class Database { /* ... */ } export const db = new Database(); // Solo se crea una vez // En cualquier archivo import { db } from './database'; // Siempre la misma instancia