// 缓存实例的不可变类
//如果程序经常使用相同的不可变类实例,则考虑使用缓存的不可变类。
public class CacheImmutale {
//定义一个不可变的属性
private final String name;
private static int pos = 0;
//缓存池,一定要在全局变量。
static CacheImmutale[] caiArry = new CacheImmutale[10];
//如果不想程序new新对象,可以把构造器隐藏起来。
public CacheImmutale(String name) {
super();
this.name = name;
}
//只提供get方法提供set方法
public String getName(){
return name;
}
public static CacheImmutale valueOf(String name)
{
for (int i = 0; i < 10; i++) {
if(caiArry[i] != null && caiArry[i].getName().equals(name))
{
return caiArry[i];
}
}
if(pos == 10){
caiArry[0] = new CacheImmutale(name);
pos=1;
return caiArry[0];
}else{
//先赋值后自加。
caiArry[pos++]=new CacheImmutale(name);
return caiArry[pos-1];
}
}
public static void main(String[] args) {
CacheImmutale c1 = CacheImmutale.valueOf("a");
CacheImmutale c2 = CacheImmutale.valueOf("a");
System.out.println(c1==c2);//true;
}
}