Middle+
Jaké vzory návrhu jsou běžné v JavaScriptu a TypeScriptu, které se v Javě nevyskytují?
sobes.tech AI
Odpověď od AI
- Singleton (v JS/TS je jednodušší realizovat pomocí modulů a uzávěrů).
- Modul (implicitní vzor jazyka).
- Prototype (pomocí prototypového dědění).
- Mixin (přes Object.assign, třídy nebo tovární funkce).
- Pattern odhalující modul (použitím uzávěrů).
- Factory Function (alternativa ke konstruktorům tříd).
- Dependency Injection (častěji přes továrny nebo kontejnery, není tak závislé na anotacích jako v Javě).
Příklady rozdílů:
- Singleton:
// singleton.js
const instance = {
data: 'nějaká data'
};
export default instance; // Jednoduchý export jediné instance
V Javě je potřeba statická metoda getInstance() a soukromý konstruktor.
- Module:
// module.js
const privateVar = 'soukromé';
export function publicMethod() {
console.log(privateVar);
}
V Javě je potřeba explicitně deklarovat třídy a modifikátory přístupu.
- Prototype:
const animal = {
speak() {
console.log('...');
}
};
const dog = Object.create(animal);
dog.speak = function() {
console.log('woof');
};
dog.speak(); // woof
V Javě je dědičnost založena na třídách.
- Mixin:
const searchable = {
search() {
console.log('Hledání...');
}
};
class Article {
constructor(title) {
this.title = title;
}
}
Object.assign(Article.prototype, searchable);
const myArticle = new Article('Ahoj');
myArticle.search(); // Hledání...
V Javě není nativní podpora mixinů (používají se rozhraní nebo kompozice).