annotations-design-patterns
    Preparing search index...

    Function Flyweight

    • Patrón Flyweight: comparte instancias por combinación de argumentos del constructor (clave JSON.stringify(args)). new Color('red') devuelve siempre el mismo objeto para los mismos argumentos. Pensado para objetos de valor inmutables que se repiten mucho.

      ADVERTENCIA de memoria: la cache interna es un Map que retiene las instancias para siempre (es la esencia del patrón). Úsalo solo con argumentos de cardinalidad acotada (colores, glifos, configuraciones…); con claves ilimitadas (IDs, timestamps) la memoria crece sin límite. La clave es JSON.stringify(args), con sus limitaciones (ver @Memoize).

      Type Parameters

      • T extends new (...args: never[]) => object

      Parameters

      • target: T
      • context: ClassDecoratorContext<T>

      Returns T

      @Flyweight
      class Color {
      constructor(public name: string) {}
      }
      new Color('red') === new Color('red'); // true