Object pool (patró de disseny)

patró de disseny

Object Pool (Piscina d'objectes) és un patró de disseny per al desenvolupament de programari. El patró object pool és un patró de disseny de programari que usa un conjunt d'objectes inicialitzats preparats per al seu ús. Això és més efectiu normalment que crear i destruir els objectes sota demanda. Un client del pool li demanarà un objecte per realitzar les operacions amb l'objecte. Quan el client acaba retorna l'objecte al pool perquè ho retingui fins que el torni a necessitar. És a dir, els objectes no es creen (excepte la primera vegada) ni es destrueixen, simplement es van reciclant.

Aquest patró de disseny sol millorar significativament el rendiment en situacions on el cost d'iniciar una instància de classe és alt i quan el nombre d'instàncies simultànies no és molt alt.

És comú usar els Object Pools per a la creació de recursos gràfics, connexions a bases de dades, sockets i en general qualsevol objecte la creació del qual sigui costosa. En certes ocasions l'ús d'aquest patró resulta ser més costós.

Descripció modifica

Quan és necessari treballar amb un gran nombre d'objectes que són particularment costosos d'instanciar i cada objecte només es necessita durant un curt període, el rendiment d'una aplicació pot veure's afectada negativament. Un patró de disseny object pool pot resultar útil en casos com aquests.

El patró de disseny object pool crea un conjunt d'objectes que poden ser reutilitzats. Quan es necessita un nou objecte, s'extreu del conjunt. Si un objecte prèviament preparat està disponible es retorna immediatament, evitant així el cost d'instanciar-los. Si no hi ha objectes disponibles, se'n crea un de nou i s'agrega al conjunt. Quan l'objecte ha estat utilitzat i ja no es necessita, es retorna al conjunt, la qual cosa li permet ser reutilitzat de nou en el futur sense haver de repetir el procés d'instanciació, ja que aquest procés es computacionalment costós. És important tenir en compte que una vegada que un objecte s'ha utilitzat i retornat, les referències existents es tornen invàlides.

En alguns casos els recursos poden ser limitats per la cual cosa s'especifica un nombre màxim d'objectes. Si s'aconsegueix aquest nombre i se sol·licita un nou element, pot llançar-se una excepció, o es pot bloquejar el fil de treball fins que un objecte s'alliberi de nou.