[Core] PooledObjectFactory<T> - 一个"定义对象池中实例的生命周期方法"的接口

池对象工厂的职责：
1. 每当需要一个新的实例时，makeObject()会被调用。
2. 在每个实例从对象池被借走之前，activateObject(PooledObject)会被调用。
3.
validateObject(PooledObject)可能会在激活(activateObject(PooledObject))的实例上被调用，
   以确保他们可以从对象池借用。validateObject(PooledObject)也可以用于测试一个返回给对象池的实例。
4. 在每个实例返回到对象池时，passivateObject(PooledObject)会被调用。
5.
在每个实例从对象池被移除时，destroyObject(PooledObject)会被调用（是否由于validateObject(PooledObject)的响应信息）。
 
PooledObjectFactory必须是线程安全的。
唯一保证：一个对象池制造的相同的对象实例不会在同一时刻被传入到多个方法中。

PooledObject<T> makeObject() throws
Exception：创建一个能被保存到对象池的实例，并将它包装成一个池对象(PooledObject)，以便由对象池管理。

boolean validateObject(PooledObject<T> p)：确保可以返回给"对象池"的池对象实例是安全的。

void activateObject(PooledObject<T> p) throws
Exception：重新初始化可以返回给"对象池"的池对象。

void passivateObject(PooledObject<T> p) throws
Exception：未初始化可以返回给"空闲对象池"的池对象。

void destroyObject(PooledObject<T> p) throws Exception：销毁对象池中不再需要的实例。
必须加以考虑：没有被垃圾收集器回收的实例，可能永远不会被销毁！