TGViewer
Pattern Guru. Шаблоны проектирования. Архитектура ПО Pattern Guru. Шаблоны проектирования. Архитектура ПО @highloadmicro · 3.09K subscribers
Post #364 1.38K
Вопрос с собеседования

Для чего нужен Decorator паттерн в Javascript?
Приведите пример.

Ответ:

Javascript предоставляет удивительно гибкие возможности по работе с функциями: их можно передавать, в них можно записывать данные как в объекты, у них есть свои встроенные методы.

Шаблон декоратора динамически расширяет (украшает) поведение объекта. Возможность добавления нового поведения во время выполнения достигается с помощью объекта Decorator, который «оборачивается» вокруг исходного объекта. Несколько декораторов могут добавлять или переопределять функциональность исходного объекта.

Примером декоратора является управление безопасностью, где бизнес-объектам предоставляется дополнительный доступ к привилегированной информации в зависимости от привилегий аутентифицированного пользователя. Например, менеджер по персоналу приступает к работе с объектом сотрудника, к которому добавлена (то есть украшена) запись о зарплате сотрудника, чтобы можно было просматривать информацию о зарплате.

Декораторы обеспечивают гибкость статически типизированных языков, позволяя вносить изменения во время выполнения, а не наследование, которое происходит во время компиляции. Однако JavaScript - это динамический язык, и возможность расширения объекта во время выполнения встроена в сам язык.

Пример использования декоратора в JavaScript:

function User(name) {
this.name = name,
this.print = () => console.log(this.name)
}

const jane = new User ('Jane Doe')
jane.print() // 'Jane Doe'

function DecorateWithCity(user, city) {
user.city = city
user.print = function() {
console.log (${this.name} from ${this.city})
}
}

DecorateWithCity(jane, 'NewYork')
jane.print(); //'Jane Doe from New York'


#interview
  • 👍 1
More from @highloadmicro
  1. Sep 10, 2026Вопрос с собеседования Что такое Dependency inversion principle? Ответ: Dependency inversi…
  2. Sep 9, 2026Вопрос с собеседования Что такое Dependency inversion principle? Ответ опубликуем завтра,…
  3. Aug 24, 2026#паттерны Введение Сегодня мы рассмотрим паттерн проектирования "Адаптер". Классификация Т…
  4. Aug 10, 2026Kubernetes Patterns Автор: Bilgin Ibryam Год издания: 2023 #en Скачать книгу
  5. Jul 27, 2026🚩 Шаблон проектирования Команда 🟣 Подробное описание паттерна Команда (англ. Command) —…
  6. Jul 20, 2026🔥 Топ-9 паттернов для обмена данными и взаимодействия между компонентами/сервисами в расп…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →