Middle+
Ποια μοτίβα σχεδίασης είναι διαδεδομένα σε JavaScript και TypeScript που δεν συναντώνται στη Java;
sobes.tech AI
Απάντηση από AI
- Singleton (στο JS/TS υλοποιείται πιο εύκολα μέσω modules και closures).
- Module (ενδογενές μοτίβο της γλώσσας).
- Prototype (μέσω πρωτότυπης κληρονομιάς).
- Mixin (μέσω Object.assign, κλάσεων ή εργοστασιακών συναρτήσεων).
- Pattern Αποκάλυψης Module (χρησιμοποιώντας closures).
- Factory Function (εναλλακτική στους κατασκευαστές κλάσεων).
- Dependency Injection (συχνότερα μέσω εργοστασίων ή κοντέινερ, όχι τόσο εξαρτώμενο από τις σημάνσεις όπως στην Java).
Παραδείγματα διαφορών:
- Singleton:
// singleton.js
const instance = {
data: 'some data'
};
export default instance; // Απλή εξαγωγή μιας μοναδικής στιγμής
Στην Java, απαιτείται μια στατική μέθοδος getInstance() και ιδιωτικός κατασκευαστής.
- Module:
// module.js
const privateVar = 'private';
export function publicMethod() {
console.log(privateVar);
}
Στην Java, απαιτείται ρητή δήλωση κλάσεων και τροποποιητών πρόσβασης.
- Prototype:
const animal = {
speak() {
console.log('...');
}
};
const dog = Object.create(animal);
dog.speak = function() {
console.log('woof');
};
dog.speak(); // woof
Στην Java, η κληρονομιά βασίζεται σε κλάσεις.
- 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, δεν υπάρχει εγγενής υποστήριξη για mixins (χρησιμοποιούνται interfaces ή σύνθεση).