Middle+
Aké návrhové vzory sú bežné v JavaScript a TypeScript, ktoré sa v Jave nevyskytujú?
sobes.tech AI
Odpoveď od AI
- Singleton (v JS/TS sa modulmi a zatvorenji se implementira lakše).
- Module (implicitni vzor na jezika).
- Prototype (preko prototipske dediščine).
- Mixin (prek Object.assign, razredov ali tovarniških funkcij).
- Pattern razkrivajočega modula (z uporabo zapork).
- Factory Function (alternativa konstruktorjem razredov).
- Dependency Injection (pogosteje prek tovarn ali vsebnika, ni tako odvisno od anotacij kot v Javi).
Primeri razlik:
- Singleton:
// singleton.js
const instance = {
data: 'nekaj podatkov'
};
export default instance; // Preprost izvoz enega primera
V Javi je potrebna statična metoda getInstance() in zasebni konstruktor.
- Module:
// module.js
const privateVar = 'zasebno';
export function publicMethod() {
console.log(privateVar);
}
V Javi je potrebno eksplicitno deklarirati razrede in dostopne modifikatorje.
- Prototype:
const animal = {
speak() {
console.log('...');
}
};
const dog = Object.create(animal);
dog.speak = function() {
console.log('woof');
};
dog.speak(); // woof
V Javi je dedovanje zasnovano na razredih.
- Mixin:
const searchable = {
search() {
console.log('Iskanje...');
}
};
class Article {
constructor(title) {
this.title = title;
}
}
Object.assign(Article.prototype, searchable);
const myArticle = new Article('Pozdrav');
myArticle.search(); // Iskanje...
V Javi ni nativne podpore za mixine (uporabljajo se vmesniki ali kompozicija).