Sobes.tech
Middle+

Kokie dizaino modeliai yra paplitę JavaScript ir TypeScript, bet nėra Java?

sobes.tech AI

Atsakymas iš AI

  • Singleton (JS/TS lengvai įgyvendinamas naudojant modulius ir uždarymus).
  • Module (programavimo kalbos implicitinis modelis).
  • Prototype (per prototipinį paveldėjimą).
  • Mixin (per Object.assign, klases ar fabrikavimo funkcijas).
  • Revealing Module Pattern (naudojant uždarymus).
  • Factory Function (alternatyva klasių konstruktoriams).
  • Dependency Injection (dažniau per fabrikus ar konteinerius, ne taip priklausoma nuo anotacijų kaip Java).

Skirtumų pavyzdžiai:

  • Singleton:
// singleton.js
const instance = {
  data: 'kai kurie duomenys'
};

export default instance; // Paprastas vieno egzemplioriaus eksportas

Java reikalingas statinis metodas getInstance() ir privačios konstrukcijos.

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

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

Java reikalingas aiškus klasių ir prieigos modifikatorių deklaravimas.

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

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

dog.speak(); // woof

Java paveldėjimas grindžiamas klasėmis.

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

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

Object.assign(Article.prototype, searchable);

const myArticle = new Article('Labas');
myArticle.search(); // Paieška...

Java neturi natūralios mixin palaikymo (naudojami interfeisai ar kompozicija).