今天開始整理設計模式,首先整理一下單例模式的基本概況,顧名思義:
單例模式
- 只能產生一個對象
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);
}
}