Usar um switch case viola o princípio Open/Closed dos princípios SOLID (pesquisa isso no google).
Sua observação faz sentido. Se nao resolve problema real, pra que aprender???
Um exemplo real: Você está fazendo uma aplicação e usuário pode escolher salvar os dados em banco de dados ou salvar em arquivo no computador dele. O jeito certo de fazer é (em OOP): Criar uma interface que define como você vai salvar os dados; criar 2 implementações dela, uma para o banco de dados e outra para os arquivos; criar uma factory que instância a classe concreta de acordo com a escolhe do usuário.
O jeito errado de fazer: Usar um switch case =|.
Ou outra: se você usar um switch case pra selectionar a classe correta pra interface... bom, isso é a factory meu amigo haha.
Pronto, tá aí o seu exemplo prático! Boa sorte nos estudos de design patterns!