- 1

Ventajas competitivas de Node.js para empresas
02:12 - 2

Principales patrones de diseño en JavaScript y Node.js
02:50 - 3

Implementación de patrones Singleton y Factory en JavaScript
06:35 - 4

Combinando patrones Singleton y Factory para crear un logger
10:47 - 5

Patrón Observer con Event Emitter en Node.js
11:52 - 6

Implementación del patrón middleware en Node.js sin Express
07:43 - 7

Decorators e inyección de dependencias en Node.js
11:16
Combinando patrones Singleton y Factory para crear un logger
Clase 4 de 26 • Curso de Node.js Avanzado
Contenido del curso
- 8

Buffers y streams en Node.js: manejo eficiente de datos
07:27 - 9

Transformación de archivos con streams en Node.js
09:19 - 10

Event Loop en Node.js: fases y funcionamiento interno
06:24 - 11

Event Loop de Node.js: funcionamiento y orden de ejecución
06:24 - 12

Promise.all para ejecutar tareas asíncronas en paralelo
10:13
- 22

Creación de aplicaciones CLI básicas con Node.js
08:08 - 23

Parseo de argumentos CLI con Minimist en Node.js
07:12 - 24

Herramientas básicas para crear CLI en Node.js
10:26 - 25

Implementación de historial y generación de respuestas en AI assistant
16:30 - 26

Conversión de CLI Node.js a binarios instalables con npm
04:43
Crear un logger eficiente en JavaScript es posible combinando dos patrones esenciales: Singleton y Factory. Esta combinación permite gestionar registros o logs de manera centralizada y versátil, adaptándose fácilmente a las necesidades específicas del proyecto.
¿Qué es el patrón singleton y cómo implementarlo en JavaScript?
El patrón Singleton asegura que una clase tenga una única instancia en la aplicación. En JavaScript, puedes lograr esto definiendo una clase que verifica si ya existe una instancia antes de crear una nueva.
Un ejemplo claro es el siguiente:
class Logger {
constructor() {
if (!Logger.instance) {
this.logs = [];
Logger.instance = this;
}
return Logger.instance;
}
log(message) {
const timestamp = new Date();
const logObj = { message, timestamp };
this.logs.push(logObj);
console.log(logObj);
}
getLogs() {
return this.logs;
}
}
module.exports = Logger;
Al usar Singleton, se asegura que cada vez que se instancia la clase Logger sea la misma instancia, centralizando los logs en un solo lugar.
¿Cómo funciona el patrón factory para crear diferentes tipos de loggers?
El patrón Factory permite crear diferentes tipos de objetos a partir de una sola clase o interfaz. Así puedes crear fácilmente loggers específicos según tus necesidades.
Este ejemplo muestra cómo crear dos tipos de logger con un Factory:
const Logger = require('./logger');
const loggerInstance = new Logger();
class ConsoleLogger {
constructor() {
this.logger = loggerInstance;
}
log(message) {
console.log(`console logger: ${message}`);
this.logger.log(message);
}
}
class FileLogger {
constructor() {
this.logger = loggerInstance;
}
log(message) {
console.log(`file logger: ${message}`);
this.logger.log(message);
}
}
class LoggerFactory {
static createLogger(type) {
if (type === 'console') return new ConsoleLogger();
if (type === 'file') return new FileLogger();
}
}
module.exports = LoggerFactory;
¿Cómo combinar los patrones singleton y factory en una aplicación real?
Integrando ambos patrones, puedes manejar logs efectivamente en diferentes modalidades (consola, archivo, etc.), sin perder la centralización.
Aquí está el archivo principal para implementar estos conceptos combinados:
const LoggerFactory = require('./loggerFactory');
const Logger = require('./logger');
const loggerInstance = new Logger();
const consoleLogger = LoggerFactory.createLogger('console');
const fileLogger = LoggerFactory.createLogger('file');
consoleLogger.log('esto es un mensaje de en consola');
fileLogger.log('esto es un mensaje de log en archivo');
loggerInstance.getLogs().forEach(log => console.log(log));
Al ejecutar este código, verás cómo cada tipo de logger maneja su función específica, y todos los logs se mantienen en una ubicación centralizada gracias al patrón singleton.
¿Te animas a completar el reto propuesto? Cuéntame tus resultados en los comentarios.