java设计模式----单例变形(多例)
程序员文章站
2024-03-26 09:18:41
...
mport java.util.HashMap;
import java.util.Map;
public class A {
// 缓存(池)一定要有一个容器,而且这个容器是单例
private static Map<String, A> map = new HashMap<String, A>();
// 从池中获取一个对象
public static A getInstance(String key){
//如果池中存在该key对应的value对象,则直接返回出去,若没有则创建一个
A obj=map.get(key);
if(obj==null){
obj=new A();
map.put(key, obj);
}
return obj;
}
}
import java.util.HashMap;
import java.util.Map;
public class B {
// 注入,池
private static Map<Integer, B> map = new HashMap<Integer, B>();
private final static int MAX = 3;
private static int num = 1;
public static B getInstance() {
B obj = map.get(num);
if (obj == null) {
obj = new B();
map.put(num, obj);
}
num++;
if (num > MAX) {
// 根据项目需求,如果想让用户等待,得让它sleep一段时间后再递归调用当前方法...
// 本例直接写成循环使用
num = 1;
}
return obj;
}
}