Middle+
Koji obrasci dizajna su zastupljeni u JavaScriptu i TypeScriptu, a nisu prisutni u Javi?
sobes.tech АИ
Одговор од АИ
- Singleton (u JS/TS se implementira lakše putem modula i zatvaranja).
- Module (implicitni obrazac jezika).
- Prototype (kroz prototipsko nasleđivanje).
- Mixin (kroz Object.assign, klase ili fabrikacijske funkcije).
- Pattern otkrivajućeg modula (korišćenjem zatvaranja).
- Factory Function (alternativa konstruktorima klasa).
- Dependency Injection (češće putem fabrika ili kontejnera, nije toliko zavisno od anotacija kao u Javi).
Primeri razlika:
- Singleton:
// singleton.js
const instance = {
data: 'neki podaci'
};
export default instance; // Jednostavan eksport jedinstvenog primera
U Javi je potrebna statička metoda getInstance() i privatni konstruktor.
- Module:
// module.js
const privateVar = 'privatno';
export function publicMethod() {
console.log(privateVar);
}
U Javi je potrebno eksplicitno deklarisati klase i modifikatore pristupa.
- Prototype:
const animal = {
speak() {
console.log('...');
}
};
const dog = Object.create(animal);
dog.speak = function() {
console.log('woof');
};
dog.speak(); // woof
U Javi, nasleđivanje se zasniva na klasama.
- Mixin:
const searchable = {
search() {
console.log('Pretraživanje...');
}
};
class Article {
constructor(title) {
this.title = title;
}
}
Object.assign(Article.prototype, searchable);
const myArticle = new Article('Zdravo');
myArticle.search(); // Pretraživanje...
U Javi, nema nativne podrške za mixine (koriste se interfejsi ili kompozicija).