Назад к вопросам
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 нет нативной поддержки миксинов (используются интерфейсы или композиция).