單例模式及getInstance()的用法


一般在單例模式下使用.getInstance()創建對象;但並不是所有有私有構造方法,對外通過getInstance方法提供
實例的情況就是單例模式。

注:單例模式:一個類有且只有一個實例。
1,一個私有的構造器
2,一個私有的該類類型的變量
3,必須有一個共有的返回類型為該類類型的方法,用來返回這個唯一的變量

eg:
public class Singleton{
    private Singleton(){}    //private 只能在自己內部供自己去訪問
    private static Singleton instance=new Singleton();//在自己內部定義自己的一個實例
    public static Singleton getInstance(){         //此靜態方法供外部直接訪問
return instance;
    }
}

判斷Singelton一個類是否是單例模式:

class Test{
    public static void main(String args[]){
Singleton s1=Singleton.getInstance();
Singleton s2=Singleton.getInstance();
if(s1==s2)
System.out.println("此類是單例模式");
else
System.out.println("此類不是單例模式");
    }
}

GetInstance與new區別:
new的使用:如Object object = new Object(),這時候,就必須要知道有第二個public的Object構造方法的
存在。


GetInstance的使用:在主函數開始時調用,返回一個實例化對象,此對象是static的,在內存中保留着它
的引用,即內存中有一塊區域專門用來存放靜態方法和變量,可以直接使用,調用多次返回同一個對象。


(1)對象使用之前通過getinstance得到,而不需要自己定義,用完之后不需要delete;
(2)new 一定要生成一個新對象,分配內存;getInstance() 則不一定要再次創建,它可以把一個已存在的
引用給你使用,這在效能上優於new;
(3) new創建后只能當次使用,而getInstance()可以跨棧區域使用,或者遠程跨區域使用。所以getInstance()

通常是創建static靜態實例方法的。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM