Sobes.tech
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 ή σύνθεση).