Middle+
¿Qué patrones de diseño son comunes en JavaScript y TypeScript que no se encuentran en Java?
sobes.tech AI
Respuesta de la IA
- Singleton (en JS/TS se implementa más fácilmente mediante módulos y cierres).
- Module (patrón implícito del lenguaje).
- Prototype (a través de la herencia prototípica).
- Mixin (mediante Object.assign, clases o funciones de fábrica).
- Patrón de módulo revelador (usando cierres).
- Función de fábrica (alternativa a los constructores de clases).
- Inyección de dependencias (más a menudo mediante fábricas o contenedores, no tan dependiente de anotaciones como en Java).
Ejemplos de diferencias:
- Singleton:
// singleton.js
const instance = {
data: 'some data'
};
export default instance; // Exportación simple de una única instancia
En Java, se necesita un método estático getInstance() y un constructor privado.
- Module:
// module.js
const privateVar = 'private';
export function publicMethod() {
console.log(privateVar);
}
En Java, se requiere la declaración explícita de clases y modificadores de acceso.
- Prototype:
const animal = {
speak() {
console.log('...');
}
};
const dog = Object.create(animal);
dog.speak = function() {
console.log('woof');
};
dog.speak(); // woof
En Java, la herencia se basa en clases.
- Mixin:
const searchable = {
search() {
console.log('Searching...');
}
};
class Article {
constructor(title) {
this.title = title;
}
}
Object.assign(Article.prototype, searchable);
const myArticle = new Article('Hello');
myArticle.search(); // Searching...
En Java, no hay soporte nativo para mixins (se utilizan interfaces o composición).