Sobes.tech
Middle+

Jaké vzory návrhu jsou běžné v JavaScriptu a TypeScriptu, které se v Javě nevyskytují?

sobes.tech AI

Odpověď od AI

  • Singleton (v JS/TS je jednodušší realizovat pomocí modulů a uzávěrů).
  • Modul (implicitní vzor jazyka).
  • Prototype (pomocí prototypového dědění).
  • Mixin (přes Object.assign, třídy nebo tovární funkce).
  • Pattern odhalující modul (použitím uzávěrů).
  • Factory Function (alternativa ke konstruktorům tříd).
  • Dependency Injection (častěji přes továrny nebo kontejnery, není tak závislé na anotacích jako v Javě).

Příklady rozdílů:

  • Singleton:
// singleton.js
const instance = {
  data: 'nějaká data'
};

export default instance; // Jednoduchý export jediné instance

V Javě je potřeba statická metoda getInstance() a soukromý konstruktor.

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

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

V Javě je potřeba explicitně deklarovat třídy a modifikátory přístupu.

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

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

dog.speak(); // woof

V Javě je dědičnost založena na třídách.

  • Mixin:
const searchable = {
  search() {
    console.log('Hledání...');
  }
};

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

Object.assign(Article.prototype, searchable);

const myArticle = new Article('Ahoj');
myArticle.search(); // Hledání...

V Javě není nativní podpora mixinů (používají se rozhraní nebo kompozice).