作为一名“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#意见”,但除此之外你是对的,这是一个通用的问题。我只是认为来自不同语言和文化的程序员可能对此有不同的见解。 –