<https://sourcemaking.com/refactoring/replace-conditional-with-polymorphism>
Sustituir el condicional por el polimorfismo Problema Usted tiene un condicional que realiza varias acciones dependiendo del tipo de objeto o de sus propiedades.

Crea subclases que coincidan con las ramas del condicional. En ellas, cree un método compartido y mueva el código de la rama correspondiente del condicional a ella. A continuación, sustituye el condicional por la llamada al método correspondiente. El resultado es que se conseguirá la implementación adecuada mediante el polimorfismo en función de la clase del objeto.

Esta técnica de refactorización puede ayudar si su código contiene operadores que realizan varias tareas que varían en función de:
→ Clase del objeto o interfaz que implementa → Valor de un campo del objeto → Resultado de la llamada a uno de los métodos de un objeto
Si aparece una nueva propiedad o tipo de objeto, tendrá que buscar y añadir código en todos los condicionales similares. Por lo tanto, el beneficio de esta técnica se multiplica si hay múltiples condicionales dispersas en todos los métodos de un objeto.
→ Esta técnica se adhiere al principio Tell-Don't-Ask: en lugar de preguntar a un objeto sobre su estado y luego realizar acciones basadas en esto, es mucho más fácil simplemente decirle al objeto lo que necesita hacer y dejar que decida por sí mismo cómo hacerlo.
→ Elimina el código duplicado. Te deshaces de muchos condicionales casi idénticos.