@Damien c’est exactement ça, sa classe implémente moins de choses, par contre il aura plus de classes, chacune répondant à un des cas de figure que du switch ou des if. Au final il aura autant de tests et testera les même choses, sauf qu’au lieu de tester 50 cas pour une méthode ou une classe, il en testera 2-3 mais pour plus de méthodes/de classes. C’est ce qu’on appelle le Single Responsibility Principle.
Dans les langages orientés objets, on a souvent des mécanismes nous permettant justement d’éviter ces conditions, on pourrait par exemple citer le polymorphisme. On obtient ainsi du code plus court, plus simple.
Ce qu’il faut comprendre c’est qu’en OO on a des outils parfois plus adaptés que des conditions. Quand c’est le cas, utiliser un if plutôt que ces outils est mauvais.