Middle+
Кои патърни за дизайн са разпространени в JavaScript и TypeScript, които не се срещат в Java?
sobes.tech AI
Отговор от 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 няма нативна поддръжка за миксини (използват се интерфейси или композиция).