Допустимо ли применять статические методы, возвращающие экземпляр класса?

Относится ли данный прием к какому-либо паттерну проектирования? Допустимо ли его применять? Могут ли такие статические методы разных объектов взаимодействовать друг с другом (вызывать друг друга по цепочке)?


Дополнение.

Речь шла про вот такую конструкцию:

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);
→ Ссылка