2013-05-12 66 views
0

以下是使用Singleton設計模式的類:Singleton類設計的幾個問題

class Singleton 
{ 
    private static Singleton instance; 
    private Singleton() 
    { 
     ... 
    } 

    public static synchronized Singleton getInstance() 
    { 
     if (instance == null) 
      instance = new Singleton(); 

     return instance; 
    } 
    ... 
    public void doSomething() 
    { 
     ... 
    } 
} 

我想了解上述類的一些設計問題?爲什麼實例變量instance是私有的和靜態的。我明白,私有化實例變量只能訪問該特定類的對象,但它對此有何幫助?

+0

增加了Java,因爲我不知道c#中的synchronized關鍵字。 – Andy 2013-05-12 15:31:33

+0

你真的需要實例化它嗎? – NilsH 2013-05-12 15:33:16

+0

@NoobUnChained我不同意這是一個dup。他在問這個特定實施是否存在任何問題,而不是單身人士可能會遭受的虐待。 – Andy 2013-05-12 15:36:51

回答

6

如果它是public,則每個人都可以使用Singleton.instance,並且會因爲它爲空而抱怨。使它私人強制他們使用getInstance(),它保證返回一個非null的實例。

如果它不是靜態,它將是一個單例的實例變量,因此您需要一個單例實例來訪問唯一的單例實例,這沒有多大意義。

+0

已刪除........ – Andy 2013-05-12 15:32:33