今天开始整理设计模式,首先整理一下单例模式的基本概况,顾名思义:
单例模式
- 只能产生一个对象
public class Singleton{
public static final Singleton singleton=new Singleton();
//私有构造函数确保只能产生一个对象
public Singleton(){}
public static Singleton getInstance(){
if(singleton==null){
return new Singleton();
}
}
//....
}
优点
创建一个对象,内存占用较少
对于所创建对象需要的资源较多情况下,可以使用单例模式,让对象驻留在内存中,以便使用
单例模式只产生一个对象,避免对资源占用的冲突,多个对象对同一个文件的读写操作
缺点
高并发可能会导致多个对象的存在
对象赋值问题
单例模式变性
- 产生N(N>1)个对象
public class SingletonMulti {
//定义最多能生产两个实例
private static int maxNum = 2;
//定义一个列表,容纳多有的实例
private static ArrayList<SingletonMulti> singletonSingletonMultilist = new ArrayList<SingletonMulti>();
//产生指定数量的实例对象
static{
for( int i=0; i<maxNum; i++ ){
singletonSingletonMultilist.add(new SingletonMulti());
}
}
private SingletonMulti(){
System.out.println("创建SingletonDevelop实例");
}
//得到随机的SingletonDevelop实例
public static SingletonMulti SingletonSingletonMulti(){
Random randrom = new Random();
int singletonSingletonMultiNum = randrom.nextInt(maxNum);
return singletonSingletonMultilist.get(singletonSingletonMultiNum);
}
}