Middle+
Milyen tervezési minták gyakoriak JavaScriptben és TypeScriptben, amelyek nem fordulnak elő Java-ban?
sobes.tech MI
Válasz az MI-től
- Singleton (JS/TS-ben könnyebben megvalósítható modulok és lezárások segítségével).
- Module (nyelvi implicit minta).
- Prototype (prototípus öröklődés révén).
- Mixin (Object.assign, osztályok vagy gyártó függvények segítségével).
- Revealing Module Pattern (lezárások használatával).
- Factory Function (alternatíva az osztály konstruktoroknak).
- Dependency Injection (gyakran gyárak vagy konténerek segítségével, nem annyira kötött az annotációkra, mint Java-ban).
Különbségek példák:
- Singleton:
// singleton.js
const instance = {
data: 'some data'
};
export default instance; // Egyszerű példány exportálása
Java-ban szükség van egy statikus getInstance() metódusra és egy privát konstruktorra.
- Module:
// module.js
const privateVar = 'private';
export function publicMethod() {
console.log(privateVar);
}
Java-ban explicit módon kell deklarálni osztályokat és hozzáférési módosítókat.
- Prototype:
const animal = {
speak() {
console.log('...');
}
};
const dog = Object.create(animal);
dog.speak = function() {
console.log('woof');
};
dog.speak(); // woof
Java-ban az öröklődés osztályokra épül.
- 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...
Java-ban nincs natív támogatás a mixin-okra (interfészek vagy kompozíció használható).