Sobes.tech
Middle+

Koji obrasci dizajna su zastupljeni u JavaScriptu i TypeScriptu, a nisu prisutni u Javi?

sobes.tech АИ

Одговор од АИ

  • Singleton (u JS/TS se implementira lakše putem modula i zatvaranja).
  • Module (implicitni obrazac jezika).
  • Prototype (kroz prototipsko nasleđivanje).
  • Mixin (kroz Object.assign, klase ili fabrikacijske funkcije).
  • Pattern otkrivajućeg modula (korišćenjem zatvaranja).
  • Factory Function (alternativa konstruktorima klasa).
  • Dependency Injection (češće putem fabrika ili kontejnera, nije toliko zavisno od anotacija kao u Javi).

Primeri razlika:

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

export default instance; // Jednostavan eksport jedinstvenog primera

U Javi je potrebna statička metoda getInstance() i privatni konstruktor.

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

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

U Javi je potrebno eksplicitno deklarisati klase i modifikatore pristupa.

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

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

dog.speak(); // woof

U Javi, nasleđivanje se zasniva na klasama.

  • Mixin:
const searchable = {
  search() {
    console.log('Pretraživanje...');
  }
};

class Article {
  constructor(title) {
    this.title = title;
  }
}

Object.assign(Article.prototype, searchable);

const myArticle = new Article('Zdravo');
myArticle.search(); // Pretraživanje...

U Javi, nema nativne podrške za mixine (koriste se interfejsi ili kompozicija).