通常在單例模式下使用.getInstance()建立對象;但並非全部有私有構造方法,對外經過getInstance方法提供 實例的狀況就是單例模式。函數
注:單例模式:一個類有且只有一個實例。 1,一個私有的構造器 2,一個私有的該類類型的變量 3,必須有一個共有的返回類型爲該類類型的方法,用來返回這個惟一的變量對象
eg: public class Singleton{ private Singleton(){} //private 只能在本身內部供本身去訪問 private static Singleton instance=new Singleton();//在本身內部定義本身的一個實例 public static Singleton getInstance(){ 內存
//此靜態方法供外部直接訪問 return instance; } }get
判斷Singelton一個類是不是單例模式:class
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構造方法的 存在。object
GetInstance的使用:在主函數開始時調用,返回一個實例化對象,此對象是static的,在內存中保留着它 的引用,即內存中有一塊區域專門用來存放靜態方法和變量,能夠直接使用,調用屢次返回同一個對象。引用
(1)對象使用以前經過getinstance獲得,而不須要本身定義,用完以後不須要delete; (2)new 必定要生成一個新對象,分配內存;getInstance() 則不必定要再次建立,它能夠把一個已存在的 引用給你使用,這在效能上優於new; (3) new建立後只能當次使用,而getInstance()能夠跨棧區域使用,或者遠程跨區域使用。因此getInstance() 一般是建立static靜態實例方法的。方法