Middle+
Welke ontwerppatronen komen veel voor in JavaScript en TypeScript die niet in Java voorkomen?
sobes.tech AI
Antwoord van AI
- Singleton (in JS/TS eenvoudiger te implementeren door modules en closures).
- Module (impliciet patroon van de taal).
- Prototype (via prototypisch erfgoed).
- Mixin (via Object.assign, klassen of fabrieksfuncties).
- Revealing Module Pattern (met closures).
- Factory Function (alternatief voor klass constructors).
- Dependency Injection (meestal via fabrieken of containers, niet zo afhankelijk van annotaties als in Java).
Voorbeelden van verschillen:
- Singleton:
// singleton.js
const instance = {
data: 'some data'
};
export default instance; // Eenvoudige export van een enkele instantie
In Java is een statische methode getInstance() en een private constructor nodig.
- Module:
// module.js
const privateVar = 'private';
export function publicMethod() {
console.log(privateVar);
}
In Java vereist het expliciet declareren van klassen en toegangsspecificaties.
- Prototype:
const animal = {
speak() {
console.log('...');
}
};
const dog = Object.create(animal);
dog.speak = function() {
console.log('woof');
};
dog.speak(); // woof
In Java is erfelijkheid gebaseerd op 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 is er geen native ondersteuning voor mixins (worden interfaces of compositie gebruikt).