An Object Pool may be defined as a container of objects that
are ready for use. Lists of ready-to-be-used objects are contained in this
pool. Whenever a new request for an object creation comes in, the request is
served by allocating an object from the pool. Therefore, it reduces the
overhead of creating and re-creating objects each time an object creation is
required. "An object pool is an object that holds a list of other objects,
ready to make them available for use (to yet another object, probably). It does
the management work involved, like keeping track of which objects are currently
in use, how many objects the pool holds, whether this number should be
increased."