Estou vendo muitas classes instanciadas no mundo C ++ e Java que não têm nenhum estado.
Realmente não consigo descobrir por que as pessoas fazem isso, elas podem usar apenas um espaço para nome com funções livres em C ++, ou uma classe com um construtor privado e apenas métodos estáticos em Java.
O único benefício em que consigo pensar é que você não precisa alterar a maior parte do seu código se depois decidir que deseja uma implementação diferente em determinadas situações. Mas isso não é um caso de design prematuro? Pode ser transformado em uma classe mais tarde, quando / se for apropriado.
Estou entendendo errado? Não é POO se eu não colocar tudo em objetos (ou seja, classes instanciadas)? Então, por que existem tantos namespaces e classes de utilitários nas bibliotecas padrão de C ++ e Java?
Atualização: Eu certamente já vi muitos exemplos disso em meus trabalhos anteriores, mas estou lutando para encontrar exemplos de código aberto, então talvez não seja tão comum assim. Ainda assim, estou me perguntando por que as pessoas fazem isso e como é comum.