Конкретный пример, который вы разместили, не будет иметь никакого преимущества перед обычным конструктором. Однако есть два общих шаблона, которые используют такой метод для получения объекта:
Шаблон синглтона
Одноэлементный шаблон можно использовать, когда вы хотите предотвратить создание нескольких экземпляров объекта, но при этом хотите использовать объектно-ориентированные аспекты класса (например, поля, свойства, методы без параметров). Пример:
public class MySingletonClass
{
private MySingletonClass currentInstance = null;
public MySingletonClass CreateInstance()
{
if (currentInstance == null)
{
currentInstance = new MySingletonClass();
}
else
{
return currentInstance;
}
}
}
Заводская модель
Фабричный шаблон - прекрасная возможность абстрагироваться от создания конкретных классов; например, давайте на мгновение предположим, что у вас есть некоторый XML, и в зависимости от того, какой узел (NodeA, NodeB или NodeC) вы видите в XML, у вас есть другой класс, который будет обрабатывать его. Пример:
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();
}
}
}