Sobes.tech
Junior — Middle

Spiega cos'è il pattern Decorator e come viene applicato nel framework NestJS

sobes.tech AI

Risposta dell'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 помогает добавлять метаданные и расширять функциональность классов и методов без изменения их внутренней логики.