Предпочтительнее использовать объекты вместо классов c из-за тестовых целей.
Предположим, у вас есть этот класс
public class SomeLogic {
public object SomeMethod() {
...
NetUtils.Post("aUrl",aObject);
...
}
}
Вы никогда не сможете создать юнит test: этот код всегда будет выполнять http-вызов. Ваш тест может завершиться неудачно из-за сетевых ошибок или ошибок сервера, и это не то, чего вы хотите достичь с помощью модульного теста.
В этом случае я бы просто ввел зависимость (как синглтон или нет) через interface
public interface INetworkUtils {
string Post(string api, Dictionary<string, string> mParams)
}
, так что если вам нужно создать модульный тест, вы можете.
Если вы не собираетесь создавать тесты, тогда решение с классом stati c подходит.