25.2. Separa el modelo de datos de la interfaz

El sistema de objetos flexible e implícito de Python reduce el coste de la toma de decisiones sobre la arquitectura de la aplicación en comparación con otros lenguajes más rígidos (sí, estamos pensando en C++). Una de ellas es la cuidadosa separación del modelo de datos (las clases y estructuras de datos que representan el estado para los que la aplicación está diseñada para manejar) del controlador (las clases que implementan la interfaz de usuario).

En Python, un patrón de uso habitual es el de tener una clase principal editora/controladora que encapsula la interfaz de usuario (con, probablemente, pequeñas clases para controles que mantengan su estado) y una clase de modelo principal que encapsula el estado de la aplicación (probablemente con algunos miembros que son en sí mismos instancias de pequeñas clases para representación de datos). La clase controladora (controlador) llama a métodos de la clase modelo (el modelo) para realizar su manipulación de datos. A su vez, el modelo delega la representación en pantalla y el procesado de entrada de datos al controlador.

Reducir la interfaz entre el modelo y el controlador facilita evitar quedar atrapado en decisiones iniciales sobre la relación entre cualquiera de ambas partes. También hace más sencillo el mantenimiento de la aplicación y el diagnóstico de fallos.