2013-03-16 33 views
1

單身人士的概念讓我很生氣。單身人士課程實際上是什麼,爲什麼使用它?有沒有必要使用單例類?我其實不太瞭解單身人士課程,只是說「這是一個只對象初始化的課程」。靜態和readOnly ...白色的blaw ...單身類的概念實際上是什麼?每當我研究單例類時,我都會看到這個代碼。什麼是單身課程?它在C#中使用,如果是,那麼在哪裏和爲什麼?

public class Singleton 
{ 
    private static Singleton instance; 

    private Singleton() { } 

    public static Singleton Instance 
    { 
     get 
     { 
      if (instance == null) 
       instance = new Singleton(); 
      return instance; 
     } 
    } 

    //instance methods 
} 

請幫我理解OOP中的單例類或單例概念。請幫助我。提前致謝。

+1

對於單身人士來說Google是邪惡的,當你不使用它們時(或者你可以弄清楚什麼時候使用它們),這會給你一些見解。我想它的味道。 – bas 2013-03-16 10:09:28

+1

請注意,您的示例代碼很糟糕:有一個競爭條件可能允許在多線程環境中創建多個「singleton」實例。 – LukeH 2013-03-16 10:26:07

回答

2

單例模式的想法是隻存在一個實例。

使用示例是您有權使用遠程服務的許可證,但只能在任何時候進行有限數量的查詢。單身人士的客戶可以自由地提出請求,而不用擔心過多的服務器調用帶來的許可影響,並且單身人員管理將這些行爲放在隊列中並確保滿足許可條款。而且因爲只能有一個單身人士,你一定不會違反許可條款。

1

單例模式是一種設計模式,它將類的實例化限制爲一個對象。 當需要確切的一個對象來協調整個系統的操作時,這非常有用。

例如:如果你的類有一個int索引。檢查出指數的值在OBJ3

 NonSingleton obj1 = new NonSingleton();//obj1.index = 0 
     NonSingleton obj2 = new NonSingleton();//obj2.index = 0 
     obj2.index = 11; 
     NonSingleton obj3 = new NonSingleton();//obj3.index = 0 


     Singleton obj1 = Singleton.Instance;//obj1.index = 0 
     Singleton obj2 = Singleton.Instance;//obj2.index = 0 
     obj2.index = 11; 
     Singleton obj3 = Singleton.Instance;//obj3.index = 11 

另外,A單允許訪問單個創建的實例 - 該實例 (或更確切地說,該實例的引用)可以作爲參數 其它方法被傳遞,並將其視爲正常對象。

靜態類只允許靜態方法。

+0

靜態和單例類對象有什麼區別嗎?是否都用作全局創建的對象? – 2013-03-16 10:33:40

+0

@NomiAli:更新了我的答案,請參閱 – 2013-03-16 10:38:12

相關問題