Sobes.tech
Middle+

Millised disainimustrid on levinud JavaScriptis ja TypeScriptis, kuid mitte Java's?

sobes.tech AI

Vastus AI-lt

  • Singleton (JS/TS-s on lihtsam teostada modulite ja sulgude abil).
  • Module (keele implitsiitne muster).
  • Prototype (prototüüp pärimise kaudu).
  • Mixin (Object.assign, klasside või tehasefunktsioonide kaudu).
  • Revealing Module Pattern (kasutades sulgusid).
  • Factory Function (alternatiiv klasside konstruktoritele).
  • Dependency Injection (enamasti tehase või konteineri kaudu, mitte nii palju sõltuv annotatsioonidest nagu Java-s).

Näited erinevustest:

  • Singleton:
// singleton.js
const instance = {
  data: 'mõned andmed'
};

export default instance; // Lihtne ühe eksemplari eksport

Java-s on vaja staatilist meetodit getInstance() ja privaatset konstruktorit.

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

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

Java-s on vaja klasside ja juurdepääsimuutujate selget deklareerimist.

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

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

dog.speak(); // woof

Java-s põhineb pärimine klassidel.

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

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

Object.assign(Article.prototype, searchable);

const myArticle = new Article('Tere');
myArticle.search(); // Otsimine...

Java-s ei ole sisseehitatud tugi mixinidele (kasutatakse liideseid või koostööd).