Eu não diria que você está usando um design ruim. Há sempre um custo na codificação - para ganhar o prêmio mais digno da classe 'CS' / mais orientado a objeto não é realmente o que é codificação. O código é uma ferramenta, como qualquer outro e como a maioria das ferramentas - você inventa usos para essas ferramentas conforme necessário.
Eu acho mais fácil usar uma classe estática para coisas do tipo 'utilitário' como você tem aqui e depois desestabilizá-las. Em essência, você só precisa saber quando são criados, destruídos e em qual deles você está se referenciando, em vez de reconstruir uma classe singleton, que tem um formato muito diferente. A maneira que eu costumo construir minhas classes estáticas é bem parecida com a maneira como eu trato os objetos de qualquer maneira, menos alguns da contabilidade - então é mais facilmente escalável.
Em suma: se você não precisa complicar seu produto e economizar tempo com sua solução, não há problema algum com o que você fez. À medida que você for mais experiente, aprenderá como manter seu código gerenciável, de modo que, se precisar dimensioná-lo e torná-lo instável, você já criou seu modelo de como funciona 1 em uma bolha.Não há punição maior, no entanto, por ter construído uma solução muito não escalável e seu chefe lhe diz no dia seguinte para que suporte x1000.