Saltar al contenido principal

ObjectPool

La clase ObjectPool está diseñada para gestionar el pooling de objetos, una técnica que optimiza la reutilización de recursos al reciclar objetos en lugar de crearlos y destruirlos con frecuencia.

constructor(createFn: CreateFunction, initialSize?: number)

Esta clase permite a los usuarios definir la lógica personalizada de creación de objetos y gestionar eficientemente el pool.

Parámetros:

  • createFn: Una función delegada responsable de crear nuevos objetos.
  • initialSize (opcional): El número inicial de objetos a pre-crear y almacenar en el pool. Por defecto es 10.

Ejemplo:

    const pool = new ObjectPool(() => ({x:0, y:0}), 20);

acquire(): any

Recupera un objeto del pool. Si el pool tiene objetos disponibles, devolverá uno de ellos. Si está vacío, creará un nuevo objeto usando la función createFn.

Ejemplo:

    const obj = pool.acquire();

release(object: any): void

Libera un objeto de vuelta al pool, haciéndolo disponible para su reutilización.

Parámetros:

  • object: El objeto a liberar al pool.

Ejemplo:

    pool.release(obj);

size(): number

Devuelve el número actual de objetos disponibles en el pool.

Ejemplo:

    console.log(pool.size());

resize(newSize: number): void

Permite redimensionar dinámicamente el pool agregando más objetos cuando sea necesario.

Parámetros:

  • newSize: El tamaño objetivo para el pool.

Ejemplo:

    pool.resize(50);

shuffle(): void

Reordena aleatoriamente los objetos en el pool, asegurando una distribución uniforme.

Ejemplo:

    pool.shuffle();