Poolパッケージは、インスタンスがプールされる方法と、インスタンスが生成・消滅する方法を使い分ける事を可能としています。
PoolableObjectFactory
インターフェースは、プールされたオブジェクトのライフサイクルを総括的に管理/サポートします:
public interface PoolableObjectFactory {
Object makeObject();
void activateObject(Object obj);
void passivateObject(Object obj);
boolean validateObject(Object obj);
void destroyObject(Object obj);
}
ObjectPool実装は、任意のPoolableObjectFactoryを受け入れるようなコードで記述されるかもしれません。
プールされた様々なオブジェクトとは全く別のプールの仕方を選択する事を可能とします。
BasePoolableObjectFactory
クラスは、PoolableObjectFactoryの実装を簡単にする為の基底抽象クラスです。
KeyedPoolableObjectFactory
インターフェースは、KeyedObjectPoolと似たインターフェースを規定しています:
public interface KeyedPoolableObjectFactory {
Object makeObject(Object key);
void activateObject(Object key, Object obj);
void passivateObject(Object key, Object obj);
boolean validateObject(Object key, Object obj);
void destroyObject(Object key, Object obj);
}
BaseKeyedPoolableObjectFactory
クラスは、KeyedPoolableObjectFactoryの実装を簡単にする為の基底抽象クラスです。