Объясните, что представляет собой паттерн Decorator и как его применяют в фреймворке NestJS
Ответ от нейросети
sobes.tech AI
Паттерн 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 помогает добавлять метаданные и расширять функциональность классов и методов без изменения их внутренней логики.