# Poco

# template < class C, class P = C * >

# class PoolableObjectFactory

Library: Foundation
Package: Core
Header: Poco/ObjectPool.h

## Description

A PoolableObjectFactory is responsible for creating and resetting objects managed by an ObjectPool.

Together with an ObjectPool, a PoolableObjectFactory is used as a policy class to change the behavior of the ObjectPool when creating new objects, returning used objects back to the pool and destroying objects, when the pool itself is destroyed or shrinked.

## Member Summary

Member Functions: activateObject, createObject, deactivateObject, destroyObject, validateObject

## Member Functions

### activateObject

void activateObject(
P pObject
);

Called before an object is handed out by the pool. Also called for newly created objects, before they are given out for the first time.

### createObject

P createObject();

Create and return a new object.

### deactivateObject

void deactivateObject(
P pObject
);

Called after an object has been given back to the pool and the object is still valid (a prior call to validateObject() returned true).

To maintain the integrity of the pool, this method must not throw an exception.

### destroyObject

void destroyObject(
P pObject
);

Destroy an object.

To maintain the integrity of the pool, this method must not throw an exception.

### validateObject

bool validateObject(
P pObject
);

Checks whether the object is still valid and can be reused.

Returns true if the object is valid, false otherwise.

To maintain the integrity of the pool, this method must not throw an exception.