Middle+
Kokie dizaino modeliai yra paplitę JavaScript ir TypeScript, bet nėra Java?
sobes.tech AI
Atsakymas iš AI
- Singleton (JS/TS lengvai įgyvendinamas naudojant modulius ir uždarymus).
- Module (programavimo kalbos implicitinis modelis).
- Prototype (per prototipinį paveldėjimą).
- Mixin (per Object.assign, klases ar fabrikavimo funkcijas).
- Revealing Module Pattern (naudojant uždarymus).
- Factory Function (alternatyva klasių konstruktoriams).
- Dependency Injection (dažniau per fabrikus ar konteinerius, ne taip priklausoma nuo anotacijų kaip Java).
Skirtumų pavyzdžiai:
- Singleton:
// singleton.js
const instance = {
data: 'kai kurie duomenys'
};
export default instance; // Paprastas vieno egzemplioriaus eksportas
Java reikalingas statinis metodas getInstance() ir privačios konstrukcijos.
- Module:
// module.js
const privateVar = 'privatus';
export function publicMethod() {
console.log(privateVar);
}
Java reikalingas aiškus klasių ir prieigos modifikatorių deklaravimas.
- Prototype:
const animal = {
speak() {
console.log('...');
}
};
const dog = Object.create(animal);
dog.speak = function() {
console.log('woof');
};
dog.speak(); // woof
Java paveldėjimas grindžiamas klasėmis.
- Mixin:
const searchable = {
search() {
console.log('Paieška...');
}
};
class Article {
constructor(title) {
this.title = title;
}
}
Object.assign(Article.prototype, searchable);
const myArticle = new Article('Labas');
myArticle.search(); // Paieška...
Java neturi natūralios mixin palaikymo (naudojami interfeisai ar kompozicija).