Sobes.tech
Middle+

Welche Entwurfsmuster sind in JavaScript und TypeScript verbreitet, die in Java nicht vorkommen?

sobes.tech KI

Antwort von AI

  • Singleton (in JS/TS einfacher umzusetzen durch Module und Closures).
  • Modul (implizites Muster der Sprache).
  • Prototype (durch prototypische Vererbung).
  • Mixin (über Object.assign, Klassen oder Fabrikfunktionen).
  • Revealing Module Pattern (mit Closures).
  • Factory Function (Alternative zu Klassenkonstruktoren).
  • Dependency Injection (häufig über Fabriken oder Container, weniger auf Annotationen angewiesen als in Java).

Beispiele für Unterschiede:

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

export default instance; // Einfache Exportierung einer einzigen Instanz

In Java benötigt man eine statische Methode getInstance() und einen privaten Konstruktor.

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

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

In Java ist eine explizite Deklaration von Klassen und Zugriffsmodifikatoren erforderlich.

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

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

dog.speak(); // woof

In Java basiert Vererbung auf Klassen.

  • 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...

In Java gibt es keinen nativen Support für Mixins (es werden Interfaces oder Komposition verwendet).