L'esempio particolare che hai postato non sarebbe davvero avere alcun vantaggio rispetto all'uso di un normale costruttore.Ci sono due comuni modelli, tuttavia, che utilizzano un metodo come questo per produrre un oggetto:
Singleton pattern
il pattern Singleton può essere utilizzato quando si vuole evitare che più istanze di un oggetto da essere creato ma ancora voler sfruttare gli aspetti orientati agli oggetti di una classe (ad es. campi, proprietà, metodi senza parametri). Esempio:
public class MySingletonClass
{
private MySingletonClass currentInstance = null;
public MySingletonClass CreateInstance()
{
if (currentInstance == null)
{
currentInstance = new MySingletonClass();
}
else
{
return currentInstance;
}
}
}
fabbrica modello
Il modello di fabbrica è una grande opportunità di astrarre la creazione di classi concrete; per esempio, supponiamo per un momento che tu abbia del codice XML e, a seconda del nodo (NodeA, NodeB o NodeC) che vedi nell'XML, hai una classe diversa che la elabora. Esempio:
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();
}
}
}
fonte
2009-05-18 03:55:54
Vorrei aggiungere a questa risposta la risposta di Robert Paulson in merito a "fare qualcosa di più della semplice creazione" in quanto sembrerebbe completare questa risposta o almeno estendere la "parte della risposta in cache o altrimenti registrata". –