Ja parou pra pensar que o codigo eh legado justamente pq o refactoring foi proibido, e que todo codigo que nao eh mantido ‘em forma’ se torna legado?
Considere mudar de emprego
Ah, “e usar Singleton so pra seguir o pattern” nao ta certo nesse caso - a menos que o seu Foo represente uma entidade fisica que so pode mesmo existir uma vez por ClassLoader (e eu quase nunca vejo uma dessas).
A aplicação do padrão Singleton permite o refinamento dos métodos implementados em subclasses. Com métodos estáticos, esse recurso não é possível, considerando que não são polimórficos.
Uma explicação mais detalhada pode ser encontrado no seguinte livro:
LARMAN, C. Utilizando UML e Padrões. Bookman, 2002, 2ª Edição, Porto Alegre, RS.
Vale a pena dar uma olhada nele. É uma abordagem prática de padrões.
Singletons sao estado global da sua aplicacao. Se voce tinha nojo de variaveis globais, os mesmos principios se aplicam aqui, e vc devia ter nojo de singletons tambem.