Sobes.tech
Middle+

Quels modèles de conception sont courants en JavaScript et TypeScript mais pas en Java?

sobes.tech IA

Réponse de l'IA

  • Singleton (en JS/TS est plus facilement réalisé grâce aux modules et aux closures).
  • Module (patron implicite du langage).
  • Prototype (par héritage prototype).
  • Mixin (via Object.assign, classes ou fonctions de fabrique).
  • Pattern de module révélant (avec utilisation de closures).
  • Fonction de fabrique (alternative aux constructeurs de classes).
  • Injection de dépendances (souvent via des usines ou des conteneurs, pas autant basé sur des annotations qu’en Java).

Exemples de différences :

  • Singleton :
// singleton.js
const instance = {
  data: 'some data'
};

export default instance; // Exportation simple d’une seule instance

En Java, il faut une méthode statique getInstance() et un constructeur privé.

  • Module :
// module.js
const privateVar = 'private';

export function publicMethod() {
  console.log(privateVar);
}

En Java, il faut déclarer explicitement des classes et des modificateurs d’accès.

  • Prototype :
const animal = {
  speak() {
    console.log('...');
  }
};

const dog = Object.create(animal);
dog.speak = function() {
  console.log('woof');
};

dog.speak(); // woof

En Java, l’héritage est basé sur des classes.

  • 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, il n’y a pas de support natif pour les mixins (on utilise des interfaces ou la composition).