Объясните, что представляет собой паттерн Decorator и как его применяют в фреймворке NestJS

Паттерн Decorator — это структурный паттерн проектирования, который позволяет динамически добавлять объектам новые обязанности, оборачивая их в «декораторы».

Короткий ответ

Что ответить на собеседовании

Паттерн Decorator — это структурный паттерн проектирования, который позволяет динамически добавлять объектам новые обязанности, оборачивая их в «декораторы». Это альтернатива наследованию, позволяющая расширять функциональность без изменения исходного кода.

Подробный разбор

Ответ с пояснениями

Паттерн Decorator — это структурный паттерн проектирования, который позволяет динамически добавлять объектам новые обязанности, оборачивая их в «декораторы». Это альтернатива наследованию, позволяющая расширять функциональность без изменения исходного кода.

В NestJS декораторы широко используются для аннотирования классов, методов, параметров и свойств, чтобы добавить метаданные, которые потом обрабатываются фреймворком. Например, декораторы @Controller(), @Get(), @Injectable() — это специальные функции, которые модифицируют поведение классов или методов.

Пример простого пользовательского декоратора в NestJS:

import { SetMetadata } from '@nestjs/common';

export const Roles = (...roles: string[]) => SetMetadata('roles', roles);

// Использование:
@Controller('users')
export class UsersController {
  @Get()
  @Roles('admin')
  findAll() {
    // метод доступен только для ролей admin
  }
}

Таким образом, паттерн Decorator в NestJS помогает добавлять метаданные и расширять функциональность классов и методов без изменения их внутренней логики.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее