Skip to content

About

Patrones de diseño

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

1 Commit

Folders and files

Repository files navigation

🥃 Patrón Singleton — Licorería El Barril

Ejemplo didáctico del patrón de diseño Singleton implementado en TypeScript, aplicado a una conexión de base de datos para una licorería.

📁 Estructura

src/
├── Producto.ts          ← Entidad de dominio
├── BaseDeDatos.ts       ← Singleton (conexión a BD)
├── index.ts             ← Demo / punto de entrada
└── BaseDeDatos.test.ts  ← Tests con Node assert (sin frameworks)

🔑 Idea clave del Singleton

class BaseDeDatos {
  private static instancia: BaseDeDatos | null = null;  // única instancia

  private constructor() { /* nadie puede hacer "new" desde afuera */ }

  static obtenerInstancia(): BaseDeDatos {
    if (BaseDeDatos.instancia === null) {
      BaseDeDatos.instancia = new BaseDeDatos();         // se crea solo una vez
    }
    return BaseDeDatos.instancia;
  }
}

Resultado: sin importar cuántas veces llames a obtenerInstancia(), siempre obtienes el mismo objeto → una sola conexión a la base de datos.

🚀 Cómo ejecutar

Requisito: tener Node.js y ts-node instalados globalmente.

# Instalar tipos de Node (solo la primera vez)
npm install

# Ejecutar la demo
cmd /c "npx ts-node src/index.ts"

# Ejecutar los tests
cmd /c "npx ts-node src/BaseDeDatos.test.ts"

🧪 Tests incluidos

# Prueba
1 Siempre devuelve la misma instancia
2 La lista de productos no está vacía
3 Se puede obtener un producto por ID existente
4 Buscar un ID inexistente retorna undefined
5 Agregar un producto se refleja en ambas referencias

📚 Materia

Patrones de Diseño — 1er semestre 2026

About

Patrones de diseño

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages