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