Acabo de leer un blog post que explica MVC con una analogía bancaria. Tengo algunos meses de experiencia en el desarrollo de aplicaciones web con un framework MVC (CakePHP), así que obtengo los conceptos básicos, pero comencé a ver un tema que me hizo pensar que estoy tomando un enfoque erróneo en cuanto a dónde puse mi lógica:Modelos de grasa, controladores delgados y el patrón de diseño MVC
- modelos gordos, flacos controladores
- mantener la mayor cantidad lógica de negocio en los modelos de lo posible
en mi aplicación, los modelos son anoréxicas y los controladores son obesos. Tengo toda la lógica comercial en los controladores y nada más que asociaciones y reglas de validación en los modelos.
de barrido a través de mis controladores, que ahora puede identificar una gran cantidad de lógica que probablemente debería ir en un modelo:
- La aplicación tiene listas, que contienen artículos, y los artículos pueden ser clasificados. La lógica de clasificación que coloca la lista en orden de clasificación está en un controlador.
- De forma similar, los elementos (modelo de artículo) 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 esos son los casos de la lógica actualmente en un controlador que pertenece en un modelo?
- ¿Cuáles son algunas otras áreas de lógica, comunes a las aplicaciones web, que deberían incluirse 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 más arriba y trato de mover esa lógica a un modelo, no sabría por dónde empezar . ¿Puede alguien señalarme en la dirección correcta publicando aquí algún código o vinculándome a algunos buenos recursos de aprendizaje? La ayuda específica de CakePHP sería genial, pero estoy seguro de que cualquier MVC será suficiente.
He oído hablar de todo antes :) – Marco