特点:将重复创建消耗内存或资源的对象采用对象池方式以外部化实例实现,以达到对象重用的目的。
使用过程可分为以下三个步骤:
1.将需重复创建的对象进行对象池封装
class ExternalizedData{
static final int size=100;
static int [] id=new int[size];
static int [] i=new int[size];
static {
for(int i=0;i<size;++i){
id[i]=i;
}
}
}
2.建立中间对象对1中对象进行操作,而非对新建对象操作
class FlyPoint{
private FlyPoint(){}
public static int getI(int obnum){
return ExternalizedData.i[obnum];
}
public static void setI(int obnum,int i){
ExternalizedData.i[obnum]=i;
}
public static String getString(int obnum){
return "id:"+ExternalizedData.id[obnum]+" , i = "+ExternalizedData.i[obnum];
}
}
3.客户端操作
public class FlyWeightObjects {
public static void main(String[] args) {
for(int i=0;i<ExternalizedData.size;++i){
FlyPoint.setI(i,FlyPoint.getI(i)+1);
}
System.out.println(ExternalizedData.size-1);
}
}