單例類學習筆記

最近有同學問我下圖中爲什麼程序在類裏聲明瞭一個同類名的靜態對象。當時也沒搞懂爲什麼,最近看了李剛的java講義,才知道這個叫“單例類”,保證類只能創建一個實例。

爲什麼有時候只能建立一個實例呢?在上面的一小段程序中,是爲了保證服務器接收端只有一個端口在接收客戶端發來的信息,這個時候系統爲這些類建立多個對象就沒有多大意義。爲了避免其他類自由創建該類的實例,我們把該類的構造器使用private修飾,從而把該類的所有構造器隱藏起來。

  根據良好的封裝原則:一旦把該類的構造器隱藏起來,就需要提供一個靜態public方法作爲該類的訪問點,用於創建該類的對象,使用static修飾的原因是調用該方法之前還沒有創建對象,只有類才能調用。靜態方法只能訪問靜態變量,所以該類需要一個靜態成員變量保存曾經創建的對象。下面是書上的一段例子程序:

class Singleton
{
 private static Singleton single;
 private Singleton get()

{
  if(single==null)
{
 single=new Singleton();
}
return single;
}
public class SingletonTest
{
public static void main(String args[])
{
Singleton s1=new Singleton();
Singleton s2=new Singleton();
System.out.println(s1==s2);//輸出相等
}
}


僅作學習,歡迎探討

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