Middle+
Ce modele de proiectare sunt comune în JavaScript și TypeScript, dar nu se întâlnesc în Java?
sobes.tech AI
Răspuns de la AI
- Singleton (în JS/TS se implementează mai ușor prin module și closures).
- Modul (pattern implicit al limbajului).
- Prototype (prin moștenirea prototipică).
- Mixin (prin Object.assign, clase sau funcții factory).
- Pattern-ul Modul Dezvăluit (folosind closures).
- Funcție Factory (alternativă la constructorii de clase).
- Injecția de Dependențe (de obicei prin fabrici sau containere, nu atât de dependent de adnotări ca în Java).
Exemple de diferențe:
- Singleton:
// singleton.js
const instance = {
data: 'some data'
};
export default instance; // Export simplu al unei singure instanțe
În Java, este nevoie de o metodă statică getInstance() și un constructor privat.
- Module:
// module.js
const privateVar = 'private';
export function publicMethod() {
console.log(privateVar);
}
În Java, este necesară declararea explicită a claselor și modificatorilor de acces.
- Prototype:
const animal = {
speak() {
console.log('...');
}
};
const dog = Object.create(animal);
dog.speak = function() {
console.log('woof');
};
dog.speak(); // woof
În Java, moștenirea se bazează pe clase.
- 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...
În Java, nu există suport nativ pentru mixins (se folosesc interfețe sau compoziție).