// 缓存实例的不可变类 //如果程序经常使用相同的不可变类实例,则考虑使用缓存的不可变类。 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; } }
缓存实例的不可变类
猜你喜欢
转载自barabbas.iteye.com/blog/1833390
今日推荐
周排行