2017-04-06 152 views
1

我一直在尋找通過https://github.com/VerbalExpressions/CSharpVerbalExpressions我在那裏發現,有一類VerbalExpressions和靜態屬性DefaultExpression爲什麼公共靜態屬性返回一個對象?

public class VerbalExpressions 
{ 
    public static VerbalExpressions DefaultExpression 
    { 
     get { return new VerbalExpressions(); } 
    } 
} 

其目的在於創建像

VerbalExpressions verbEx = VerbalExpressions.DefaultExpression; 

我是新手C#程序員,我想了解,他們爲什麼要創建這樣的對象?我猜測他們沒有實現Singleton模式。

這種類型的實現的原因是什麼?任何人都可以幫忙嗎?

+4

It's單例模式,you're權的不正確使用。但是,每次訪問該屬性時都會得到一個新實例。 – HimBromBeere

+0

這是一個靜態方法(訪問器),在您創建實例的靜態方法中,您期望應該發生什麼? – Vladimir

+3

@HimBromBeere是對的,但我想指出(至少IMO)最好是將這樣的邏輯實現爲方法而不是屬性,並給它一個健談的名字,比如'CreateX'。對我而言,一個屬性表明每次訪問它時都是同一個對象。 –

回答

-2

的單例模式類應該有實現這樣

public SingleTonClass { 
    private SingleTonClass instance; 

    public static GetInstance 
    { 
     get 
     { 
     if (instance == null) 
     { 
      instance = new SingleTonClass(); 
     } 

     return instance 
     } 
    } 
} 
+3

問題是_「這種實現的原因是什麼?任何人都可以幫忙嗎?」_而不是「如何創建一個單身人士」... –

+0

如果您只需要在完整應用程序中引用一個實例,則需要有這種類型的實現。它將確保只有一個實例將被創建在App.Example中是Logger。記錄器實例應該是單例。 –

+2

這是甚至編譯?你可能忽略了'class'關鍵字嗎?無論如何,如果你不把構造函數設爲私有的,那麼新的實例仍然可以被創建,所以這不是一個完整的單例實現。 –

相關問題