Sobes.tech
Middle+

Ce modele de proiectare sunt comune în JavaScript și TypeScript, dar nu se întâlnesc în Java?

sobes.tech AI

Răspuns de la AI

  • Singleton (în JS/TS se implementează mai ușor prin module și closures).
  • Modul (pattern implicit al limbajului).
  • Prototype (prin moștenirea prototipică).
  • Mixin (prin Object.assign, clase sau funcții factory).
  • Pattern-ul Modul Dezvăluit (folosind closures).
  • Funcție Factory (alternativă la constructorii de clase).
  • Injecția de Dependențe (de obicei prin fabrici sau containere, nu atât de dependent de adnotări ca în Java).

Exemple de diferențe:

  • Singleton:
// singleton.js
const instance = {
  data: 'some data'
};

export default instance; // Export simplu al unei singure instanțe

În Java, este nevoie de o metodă statică getInstance() și un constructor privat.

  • Module:
// module.js
const privateVar = 'private';

export function publicMethod() {
  console.log(privateVar);
}

În Java, este necesară declararea explicită a claselor și modificatorilor de acces.

  • Prototype:
const animal = {
  speak() {
    console.log('...');
  }
};

const dog = Object.create(animal);
dog.speak = function() {
  console.log('woof');
};

dog.speak(); // woof

În Java, moștenirea se bazează pe clase.

  • 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...

În Java, nu există suport nativ pentru mixins (se folosesc interfețe sau compoziție).