Назад к вопросам
Middle+
119
questionbank

Какие паттерны проектирования распространены в JavaScript и TypeScript, которые не встречаются в Java?

Sobes Copilot

Получайте ответы в реальном времени

Ответ от нейросети

sobes.tech AI

  • Singleton (в JS/TS реализуется проще за счет модулей и замыканий).
  • Module (имплицитный паттерн языка).
  • Prototype (за счет прототипного наследования).
  • Mixin (через Object.assign, классы или фабричные функции).
  • Revealing Module Pattern (с использованием замыканий).
  • Factory Function (альтернатива конструкторам классов).
  • Dependency Injection (чаще через фабрики или контейнеры, не так сильно завязано на аннотации как в Java).

Примеры отличий:

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

export default instance; // Простой экспорт единственного экземпляра

В Java нужен статический метод getInstance() и приватный конструктор.

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

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

В Java требуется явное объявление классов и модификаторов доступа.

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

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

dog.speak(); // woof

В Java наследование основано на классах.

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

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

Object.assign(Article.prototype, searchable);

const myArticle = new Article('Hello');
myArticle.search(); // Searching...

В Java нет нативной поддержки миксинов (используются интерфейсы или композиция).