Фабрика против конструкторов экземпляров
Я не могу придумать никаких причин, почему одно лучше другого. Сравните эти две реализации:
public class MyClass
{
public MyClass(string fileName)
{
// some code...
}
}
в отличие от:
public class MyClass
{
private MyClass(){}
public static MyClass Create(string fileName)
{
// some code...
}
}
В платформе .Net есть несколько мест, в которых для создания экземпляров используется статический метод. Сначала я думал, что он регистрирует свои экземпляры, чтобы отслеживать их, но обычные конструкторы могут делать то же самое с помощью частных статических переменных.
В чем причина этого стиля?