Grandes declaraciones de cambio: ¿Mala POO?

Siempre he sido de la opinión de que las declaraciones de cambio grandes son un síntoma de un mal diseño de OOP. En el pasado, he leído artículos que discuten este tema y han proporcionado enfoques alternativos basados en OOP, generalmente basados en polimorfismo para crear una instancia del objeto correcto para manejar el caso.

Ahora estoy en una situación que tiene una declaración de cambio monstruosa basada en un flujo de datos de un socket TCP en el que el protocolo consiste básicamente en un comando terminado en una nueva línea, seguido de líneas de datos, seguido de un marcador final. El comando puede ser uno de los 100 comandos diferentes, por lo que me gustaría encontrar una manera de reducir esta declaración de cambio de monstruo a algo más manejable.

He buscado en Google para encontrar las soluciones que recuerdo, pero lamentablemente, Google se ha convertido en un páramo de resultados irrelevantes para muchos tipos de consultas en estos días.

¿Hay algún patrón para este tipo de problema? ¿Alguna sugerencia sobre posibles implementaciones?

Uno pensó que tenía que usar una búsqueda en el diccionario, haciendo coincidir el texto del comando con el tipo de objeto para instanciar. Esto tiene la buena ventaja de simplemente crear un nuevo objeto e insertar un nuevo comando / tipo en la tabla para cualquier comando nuevo.

Sin embargo, esto también tiene el problema del tipo de explosión. Ahora necesito 100 nuevas clases, además tengo que encontrar una manera de interactuarlas limpiamente con el modelo de datos. ¿Es la "declaración de un verdadero cambio" realmente el camino a seguir?

Agradecería sus pensamientos, opiniones o comentarios.

Respuestas a la pregunta(14)

Su respuesta a la pregunta