background image

法:
  ·createPool:用于创建特定类型和设置的对象池;
  ·destroyPool:用于释放指定的对象池;
  同时为保证 ObjectPoolFactory 的单一实例,可以采用 Singleton 设计模式,见下
述 getInstance 方法的实现:
  public static ObjectPoolFactory getInstance() {
  if (poolFactory == null) {
  poolFactory = new ObjectPoolFactory();
  }
  return poolFactory;
  }

  2)参数对象(ParameterObject)类
  该类主要用于封装所创建对象池的一些属性参数,如池中可存放对象的数目的最大
值(maxCount)、最小值(minCount)等。
  3)对象池(ObjectPool)类
  用于管理要被池化对象的借出和归还,并通知 PoolableObjectFactory 完成相应的
工作。它一般包含如下两个方法:
  ·getObject:用于从池中借出对象;
  ·returnObject:将池化对象返回到池中,并通知所有处于等待状态的线程;
  4)池化对象工厂(PoolableObjectFactory)类
  该类主要负责管理池化对象的生命周期,就简单来说,一般包括对象的创建及销毁。
该类同 ObjectPoolFactory 一样,也可将其实现为单实例。
  通用对象池的实现
  对象池的构造和管理可以按照多种方式实现。最灵活的方式是将池化对象的 Class 类
型在对象池之外指定,即在 ObjectPoolFactory 类创建对象池时,动态指定该对象池所
池化对象的 Class 类型,其实现代码如下:
  . . .
  public ObjectPool createPool(ParameterObject paraObj,Class clsType) {
  return new ObjectPool(paraObj, clsType);
  }
  . . .

  其中,paraObj 参数用于指定对象池的特征属性,clsType 参数则指定了该对象池
所存放对象的类型。对象池(ObjectPool)创建以后,下面就是利用它来管理对象了,具体
实现如下:
  public class ObjectPool {
  private ParameterObject paraObj;//该对象池的属性参数对象

  private Class clsType;//该对象池中所存放对象的类型

  private int currentNum = 0; //该对象池当前已创建的对象数目