Шаблон за дизайн на обектен басейн

Цел на модела Object Pool

Използването на модела Object Pool може значително да подобри производителността на системата; използването му е най-ефективно в ситуации, когато създаването на екземпляри от определен клас е скъпо, обектите в системата се създават често, но броят на обектите, създадени за единица време, е ограничен.

Проблемът, който трябва да бъде решен

Пулове обекти (известни също като пулове ресурси) се използват за управление на кеширане на обекти. Клиент с достъп до пул от обекти може да избегне създаването на нови обекти, като просто поиска вече създаден екземпляр в пула. Пулът от обекти може да се разраства, когато при липса на безплатни се създават нови обекти или с ограничение на броя на създадените обекти.

Желателно е всички обекти за многократна употреба, които са свободни в даден момент от времето, да се съхраняват в един и същ обект. Тогава те могат да бъдат управлявани чрез единна политика. За това класът Object Pool е проектиран, използвайки шаблона Singleton.

Дискусия на модела на обектния пул

Процесите изискват обекти от обектния пул. Когато тези обекти вече не са необходими, те се връщат в пула за по-нататъшна повторна употреба.

Ако при следващата заявка всички обекти в пула са заети, процесът ще изчака освобождаването на обекта. За да се избегне тази ситуация, обектният пул трябва да може да създава нови обекти според нуждите. В същото време той също трябва да внедри механизъм за периодично почистване на неизползвани обекти.

Структура на шаблона на обектната група

Основната идея зад модела Object Pool е да се избягва създаването на нови екземпляри на клас, ако те могат да бъдат използвани повторно.