La relación entre los enum y la cláusula switch es una de las más comunes. Tanto es así que muchas veces cuesta pensar en separarlos para encarar otra manera de usar un enum como diferenciador de categorías.
Pues bueno, la intención de este post es, al menos para este ejemplo de situación, romper con esta relación y apuntar a un diseño más orientado a objetos y menos al viejo desarrollo estructurado.