缓存实例的不可变类

// 缓存实例的不可变类
//如果程序经常使用相同的不可变类实例,则考虑使用缓存的不可变类。

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