您已經張貼不會真的有過使用普通的任何好處的具體例子會談構造函數。有兩種常見模式,但是,它使用這樣的方法,得到的對象:
Singleton模式
的單例模式可以在需要時,以防止一個對象的多個實例可以使用正在創建,但仍然希望利用類的面向對象方面(例如,字段,屬性,無參數方法)。例如:
public class MySingletonClass
{
private MySingletonClass currentInstance = null;
public MySingletonClass CreateInstance()
{
if (currentInstance == null)
{
currentInstance = new MySingletonClass();
}
else
{
return currentInstance;
}
}
}
工廠模式
工廠模式是抽象的創建具體類的一個很好的機會;例如,假設您有一些XML,並且根據您在XML中看到的節點(NodeA,NodeB或NodeC),您將擁有一個不同的類來處理它。例如:
public class MyXmlProcessorFactory
{
public static IMyXmlProcessor GetMyXmlProcessor(XmlDocument document)
{
XmlNode rootNode = document.DocumentElement;
if (rootNode.SelectSingleNode("NodeA") != null)
{
return new NodeAMyXmlProcessor();
}
else if (rootNode.SelectSingleNode("NodeB") != null)
{
return new NodeBMyXmlProcessor();
}
else if (rootNode.SelectSingleNode("NodeC") != null)
{
return new NodeCMyXmlProcessor();
}
else
{
return new DefaultMyXmlProcessor();
}
}
}
單例模式將返回對同一對象的引用,而工廠模式創建可能共享數據的多個實例。 – 2009-05-18 03:21:52
正如BillyONeal提到的,這不是Singleton模式; Singleton強制只創建一個類的一個實例。什麼時候你可能想要使用Singleton模式的一個很好的例子是隻有一個應該存在的設置類。 – 2009-05-18 03:46:19
雖然你們兩個都是對的,他的代碼並不一定能傳達一個單數,但請記住,他最初的問題是圍繞使用工廠和單件使用的*靜態構造*。 – 2009-05-18 14:40:06