Modelos gordos, controladores flacos y el patrón de diseño MVC

Acabo de leer unentrada en el blog eso explica MVC con una analogía bancaria. Tengo algunos meses de experiencia con el desarrollo de aplicaciones web con un marco MVC (CakePHP), así que entiendo los conceptos básicos, pero comencé a ver un tema que me hizo pensar que estaba adoptando un enfoque defectuoso sobre dónde puse mi lógica:

Modelos gordos, controladores flacosMantenga tanta lógica de negocios en los modelos como sea posible

En mi aplicación, los modelos son anoréxicos y los controladores son obesos. Tengo toda la lógica de negocios en los controladores y nada más que asociaciones y reglas de validación en los modelos.

Al escanear a través de mis controladores, ahora puedo identificar mucha lógica que probablemente debería ir en un modelo:

La aplicación tiene listas, que contienen elementos, y los elementos se pueden clasificar. La lógica de clasificación que pone la lista en orden de clasificación está en un controlador.Del mismo modo, los elementos (modelo de elemento) también tienen imágenes (modelo de imagen). Cada elemento puede tener una imagen predeterminada (designada por image_id en la tabla de elementos). Cuando se muestra un elemento con sus imágenes, la imagen predeterminada debe aparecer primero. Tengo la lógica que hace esto en un controlador.Cuando se muestra una lista, las listas relacionadas se muestran en la barra lateral. La lógica para determinar qué listas están relacionadas está en un controlador.

Ahora a mis preguntas:

Con los ejemplos que di anteriormente, ¿estoy en el camino correcto al pensar que esas son instancias de lógica actualmente en un controlador que pertenece a un modelo?¿Cuáles son algunas otras áreas de la lógica, comunes a las aplicaciones web, que deberían ir en los modelos?Estoy seguro de que identificar este problema y cambiar mi patrón de diseño es la mitad de la batalla, pero incluso si decido tomar esos ejemplos que di arriba e intentar mover esa lógica a un modelo, no sabría por dónde comenzar. ¿Alguien puede señalarme en la dirección correcta publicando algún código aquí, o vinculándome a algunos buenos recursos de aprendizaje? La ayuda específica de CakePHP sería genial, pero estoy seguro de que cualquier cosa MVC será suficiente.

Respuestas a la pregunta(2)

Su respuesta a la pregunta