Wzorzec puli obiektów – wzorzec projektowy, który polega na użyciu puli obiektów. Pula obiektów to zbiór zainicjowanych obiektów, które są trzymane w gotowości do użycia (zamiast je alokować lub dealokować na żądanie). Klient puli obiektów żąda obiektu z tej puli i wykonuje na tym obiekcie jakieś operacje. Po skończeniu, zamiast niszczyć obiekt - zwraca do puli. Jest to szczególny typ obiektu fabrykującego.

Użycie puli obiektów może przyczynić się do znacznego wzrostu wydajności wtedy, gdy: koszt inicjalizacji instancji klasy jest wysoki, częstotliwość tworzenia kolejnych obiektów klasy jest wysoka, liczba instancji klas będących w użyciu jest mała.

Obiekt z puli jest dostarczany w przewidywalnym czasie, podczas gdy rozrzut w czasie tworzenia nowego obiektu (szczególnie przez sieć) może być duży.

Jednakże te korzyści są w większości odczuwalne dla takich obiektów jak: połączenia bazodanowe, połączenia gniazdowe, wątki, duże obiekty graficzne (takie jak czcionki i bitmapy).

Użycie puli dla prostych obiektów (które nie wskazują na zewnętrzne zasoby lecz tylko zajmują pamięć), nie jest tak samo efektywne i może nawet obniżyć wydajność.

Obsługa pustych pul

Pule obiektów wykorzystują jedną z trzech strategii postępowania w przypadku, gdy nie ma już wolnych obiektów: