Я вижу множество инстанцируемых классов в мире C ++ и Java, которые не имеют никакого состояния.
Я действительно не могу понять, почему люди делают это, они могут просто использовать пространство имен со свободными функциями в C ++ или класс с закрытым конструктором и только статические методы в Java.
Единственное преимущество, которое я могу придумать, заключается в том, что вам не нужно менять большую часть кода, если впоследствии вы решите, что вы хотите другую реализацию в определенных ситуациях. Но разве это не случай преждевременного проектирования? Это может быть превращено в класс позже, когда / если это станет уместным.
Я правильно понял? Разве это не ООП, если я не помещаю все в объекты (т.е. в экземпляры классов)? Тогда почему в стандартных библиотеках C ++ и Java так много служебных пространств имен и классов?
Обновление: я, конечно, видел много примеров этого в моих предыдущих работах, но я изо всех сил пытаюсь найти примеры с открытым исходным кодом, так что, возможно, это не так часто. Тем не менее, мне интересно, почему люди делают это, и как часто это происходит.