作爲一名「javaland」程序員,我習慣於Factory Methods和Multiple Constructors。 我的工廠模式主要用於延遲決策,直到運行時,在實例化過程中執行某種副作用或限制或隱藏具體類型。當我深入C#時,我發現越來越多的API將多個構造函數和靜態方法混合在一起。多構造函數vs靜態創建方法
例如,XmlReader和XmlTextReader。 XmlWriter和XmlTextWriter。
我的問題是:
- 是不是有什麼特殊的用
Create
方法或者它僅僅是一個約定(如Java:getInstance
)? - C#中有關工廠方法vs構造函數的最佳實踐是什麼?爲什麼,例如,有幾個
Create
方法可以接受XmlWriter
中的XmlWriterSettings
參數,並且在XmlTextWriter
中沒有構造函數具有相同的用途?另一方面,爲什麼只有建設者接受Encoding
的論點? - 我猜主要問題是,在習慣C#中,什麼時候推薦暴露工廠方法,何時公開構造函數被暴露?
,我不認爲這是特別是C#的問題是相同的 - 這是一個面向對象的問題,首要的。既然如此,那至少是[this one]的部分欺騙(http://stackoverflow.com/q/628950/27615)。 – razlebe
我想我想要「慣用的c#意見」,但除此之外你是對的,這是一個通用的問題。我只是認爲來自不同語言和文化的程序員可能對此有不同的見解。 –