單例模式及getInstance()的用法
阿新 • • 發佈:2019-01-02
一般在單例模式下使用.getInstance()建立物件;但並不是所有有私有構造方法,對外通過getInstance方法提供
例項的情況就是單例模式。
注:單例模式:一個類有且只有一個例項。
1,一個私有的構造器
2,一個私有的該類型別的變數
3,必須有一個共有的返回型別為該類型別的方法,用來返回這個唯一的變數
eg:
public class Singleton{
private Singleton(){} //private 只能在自己內部供自己去訪問
private static Singleton instance=new Singleton();//在自己內部定義自己的一個例項
public static Singleton getInstance(){ //此靜態方法供外部直接訪問
return instance;
}
}
new的使用:如Object object = new Object(),這時候,就必須要知道有第二個public的Object構造方法的
存在。
GetInstance的使用:在主函式開始時呼叫,返回一個例項化物件,此物件是static的,在記憶體中保留著它
的引用,即記憶體中有一塊區域專門用來存放靜態方法和變數,可以直接使用,呼叫多次返回同一個物件。
(1)物件使用之前通過getinstance得到,而不需要自己定義,用完之後不需要delete;
(2)new 一定要生成一個新物件,分配記憶體;getInstance() 則不一定要再次建立,它可以把一個已存在的
引用給你使用,這在效能上優於new;
(3) new建立後只能當次使用,而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("此類不是單例模式");
}
}
new的使用:如Object object = new Object(),這時候,就必須要知道有第二個public的Object構造方法的
存在。
GetInstance的使用:在主函式開始時呼叫,返回一個例項化物件,此物件是static的,在記憶體中保留著它
的引用,即記憶體中有一塊區域專門用來存放靜態方法和變數,可以直接使用,呼叫多次返回同一個物件。
(1)物件使用之前通過getinstance得到,而不需要自己定義,用完之後不需要delete;
(2)new 一定要生成一個新物件,分配記憶體;getInstance() 則不一定要再次建立,它可以把一個已存在的
引用給你使用,這在效能上優於new;
(3) new建立後只能當次使用,而getInstance()可以跨棧區域使用,或者遠端跨區域使用。所以getInstance()
通常是建立static靜態例項方法的。