【設計模式】單例模式

今天開始整理設計模式,首先整理一下單例模式的基本概況,顧名思義:

單例模式

  • 只能產生一個對象

這裏寫圖片描述

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);  
    }  

}  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章