Sobes.tech
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).