2013-05-03 90 views
-1

爲什麼在AEinsam/HabReader使用此代碼:有關靜態方法和變量

private static User instance = null; // line:25 

public static User getInstance() { 
if (instance == null) 
    instance = new User(); 
return instance; 
} 

// line:31 

我可以做課,而不會這種方法嗎?

+1

是;可以創建一個將該代碼放入其中的類。 – SLaks 2013-05-03 20:37:06

+1

這是一個糟糕的單身人士。 – 2013-05-03 20:37:12

+1

@SotiriosDelimanolis +1指出它很糟糕,甚至有幾個原因 - 這是[JavaWorld文章](http://www.javaworld.com/javaworld/jw-04-2003/jw-0425-designpatterns.html)解釋一些問題。 – fvu 2013-05-03 20:39:52

回答

4

這是(a 執行不力Singleton。如果你省略這個靜態塊但不創建公共構造函數,那麼你的類可能沒用。如果您正在尋找一種替代方案,其行爲方式與我(和其他大多數人)的行爲方式相同,它將引導您訪問Enum Pattern

+1

重點_poorly實施_ – 2013-05-03 20:38:56

+1

@SotiriosDelimanolis,強調添加:) – 2013-05-03 20:39:33

+2

爲什麼它'實施不佳'的一個原因是因爲它沒有定義一個私人默認構造函數'私人用戶(){} 」。這意味着仍然可以有此用戶類的多個實例。 – 2013-05-03 20:41:51

2

這是一個singleton模式,這意味着該類應該只有一個實例存在。

1

該代碼的編寫者希望確保只有一個User類的實例。這種設計模式被稱爲「單身」。

是的,你可以在沒有該方法的情況下創建一個類,但是該類可能有多個實例。

+1

他沒有做很好的工作。 – 2013-05-03 20:39:12