概述
创建单例类的时候应该支持参数的传递,比如我们创建一个连接池的单例对象,就需要通过参数来指定连接池的大小,怎么做呐?
public class IdGeneratorLh {
//单例模式,懒汉式
private AtomicLong id = new AtomicLong();
//创建一个静态实例,方便外界获取
private static IdGeneratorLh instance;
private static int size;
private IdGeneratorLh(){}
public IdGeneratorLh(int size){
this.size = size;
}
public synchronized IdGeneratorLh getInstance(int size) throws Exception {
if (instance==null){
instance = new IdGeneratorLh(size);
}
//保证类只能被初始化一次
if (this.size!=0&&this.size!=size){
throw new Exception("该类已被初始化,不能再次初始化!");
}
return instance;
}
public long getId(){
return id.incrementAndGet();
}
public int getSize() {
return size;
}
public static void main(String[] args) throws Exception {
IdGeneratorLh instance = new IdGeneratorLh().getInstance(10);
System.out.println(instance.getSize());
IdGeneratorLh instance2 = new IdGeneratorLh().getInstance(30);
System.out.println(instance2.getSize());
}
}