Sobes.tech
Middle+

Aké návrhové vzory sú bežné v JavaScript a TypeScript, ktoré sa v Jave nevyskytujú?

sobes.tech AI

Odpoveď od AI

  • Singleton (v JS/TS sa modulmi a zatvorenji se implementira lakše).
  • Module (implicitni vzor na jezika).
  • Prototype (preko prototipske dediščine).
  • Mixin (prek Object.assign, razredov ali tovarniških funkcij).
  • Pattern razkrivajočega modula (z uporabo zapork).
  • Factory Function (alternativa konstruktorjem razredov).
  • Dependency Injection (pogosteje prek tovarn ali vsebnika, ni tako odvisno od anotacij kot v Javi).

Primeri razlik:

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

export default instance; // Preprost izvoz enega primera

V Javi je potrebna statična metoda getInstance() in zasebni konstruktor.

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

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

V Javi je potrebno eksplicitno deklarirati razrede in dostopne modifikatorje.

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

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

dog.speak(); // woof

V Javi je dedovanje zasnovano na razredih.

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

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

Object.assign(Article.prototype, searchable);

const myArticle = new Article('Pozdrav');
myArticle.search(); // Iskanje...

V Javi ni nativne podpore za mixine (uporabljajo se vmesniki ali kompozicija).