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();