Пул объектов – это порождающий шаблон проектирования, который представляет собой набор инициализированных и готовых к использованию объектов. Когда системе требуется объект, он не создаётся, а берётся из пула. Когда объект больше не нужен, он не уничтожается, а возвращается в пул (при этом состояние объекта сбрасывается до начального). Шаблон применяется для повышения производительности, если объекты часто создаются и уничтожаются, а также, если создание и уничтожение объекта являются затратными операциями.
При практической реализации шаблона особого внимания заслуживает стратегия поведения при переполнении пула. В этом случае возможен один из трёх вариантов: расширение пула; отказ в создании объекта и аварийный останов; ожидание освобождения одного из объектов в пуле.
Примером реализации шаблона Пул объектов является существующий на платформе.NET пул потоков, для работы с которым используется класс System.Threading.ThreadPool.