Допустимо ли применять статические методы, возвращающие экземпляр класса?
Относится ли данный прием к какому-либо паттерну проектирования? Допустимо ли его применять? Могут ли такие статические методы разных объектов взаимодействовать друг с другом (вызывать друг друга по цепочке)?
Дополнение.
Речь шла про вот такую конструкцию:
public class Solution
{
public List<Project> Projects { get; }
private Solution(params Project[] projects)
{
Projects = projects.ToList();
}
public static Solution CreateFromFile(string pathToFile)
{
return new Solution(
ProjectFileHelper.ExtractFilePaths(
File.ReadAllText(pathToFile),
FileExtension.Sln)
.Select(path => Project.CreateFromFile(path))
.ToArray());
}
}
Три класса, три статических метода вызывают друг друга по цепочке. Мозг уже сломал - никак не могу придумать ничего лучше. Если оставить так, то тогда непонятно, как это тестировать.
Ответы (1 шт):
Автор решения: rotabor
→ Ссылка
К тому, что написали EvgeniyZ и tym32167, могу ещё добавить различные десериализаторы, парсеры. Например:
// struct DateTime
public static DateTime FromBinary (long dateData);
public static DateTime Parse (ReadOnlySpan<char> s, IFormatProvider? provider);