2010-11-19 13 views
14

Estoy en un punto en el que debo tomar una decisión sobre los modelos.MVC :: ¿Qué es un modelo?

Soy consciente de que los modelos son los que usa para hacer toda la manipulación de su base de datos.

¿Pero existen modelos restringidos a esto?

Con esto quiero decir.

¿Están pensados ​​solo para la interacción con la base de datos, O están destinados a la manipulación de datos externos (por ejemplo, datos de API externas, etc.)?

+1

si usted es nuevo en MVC, usted debe tratar de leer http://net.tutsplus.com/tutorials/other/mvc-for-noobs/ – saturngod

+0

@wallyk - Gracias, supongo, que me ayude, lo menos que puedo hacer es aceptar. – Hailwood

+0

Este modelo representa los datos que pasan entre el controlador y una vista. –

Respuesta

5

Por ejemplo, en Django, el modelo es una clase que se asigna a la relación de datos (tabla) y tablas potencialmente puente (por ejemplo, para muchas a muchas relaciones).

La misma clase puede tener métodos para las manipulaciones en los datos correspondientes, podría haber clases adicionales que no definan modelos por sí mismas, sino los métodos para acceder y filtrar los datos.

Pero el modelo de términos en MVC se aplica a la descripción de las estructuras de datos y los métodos para acceder a ellas en general.

Los marcos pueden estar algo doblando la terminología abstracta. Por ejemplo, lo que Django llama vistas son en realidad funciones de controlador, y las entidades que definen la presentación se llaman plantillas, en lugar de vistas.

7

Actualizado/Refundido

No, no se limitan únicamente al acceso de base de datos.

En una aplicación MVC, la M generalmente será el modelo de su dominio. Esto significa que puede encapsular datos y lógica de negocios. Sugeriría que evite un anaemic domain model. Incluso puede configurar su modelo para que sea persistente ignorante. Para tener una idea de lo que quiero decir, eche un vistazo a esta charla en Crafting Wicked Domain Models.

Desde el punto de vista y controlador, yo recomendaría usar siempre lo que se llama un modelo de vista, incluso cuando parezca una asignación de 1 a 1. Tarde o temprano descubrirá que los modelos son realmente diferentes y no quiere dar más visibilidad a la Vista que traducir un Modelo de Vista simple directamente a HTML u otro formato de representación.

El trabajo de los controladores es simplemente ejecutar comportamientos en su modelo y crear modelos de vista para las vistas.

+0

El modelo se refiere no solo a los datos, sino también a la lógica de la aplicación. –

+1

modelo de dominio anémico me abrió los ojos. Me faltaba este enlace. – YakRangi

13

El paradigma MVC es un patrón de diseño en el que organiza su aplicación con la siguiente estructura.

El modelo: aquí es donde debe mantener su modelo de datos, los algoritmos. Por ejemplo, si escribe una aplicación de hoja de cálculo, mantendrá la estructura de datos de su hoja de cálculo. Tendría el motor de cálculo en su modelo, tendría el código para guardar y cargar su hoja de cálculo en su modelo. Esta clase de modelo podría reutilizarse en otras aplicaciones, por ejemplo, si tiene un código para hacer la compresión de datos.

La vista o las vistas: esta es la parte de su código para visualizar los datos (la IU); para una hoja de cálculo, usted tiene una hoja de cálculo típica con las celdas A1 a Z100 etc. También puede visualizar sus datos usando un gráfico ver. Etc. Una vista podría reutilizarse en otra aplicación, por ejemplo, podría reutilizar su elegante vista de gráfico.

El controlador es lo que conecta las vistas al modelo. Esta es probablemente la pieza menos reutilizable, el controlador conoce el modelo y sabe qué vistas mostrar. Normalmente, el controlador configurará la devolución de llamada a la que llamará la vista cuando el usuario interactúe con la aplicación. El controlador obtendrá la información del modelo y actualizará la vista.

Si sigue estas pautas, podría cambiar su modelo, por ejemplo, cambiar de un modelo que guarda archivos en un disco a un modelo que guarda archivos en la nube sin cambiar la interfaz de usuario ... en teoría. También podría agregar nuevas vistas sin cambiar su modelo. También puede escribir pruebas de unidad o prueba de regresión para sus modelos.

No hay reglas estrictas, lo mejor es usar el sentido común y su propio juicio.

Cuestiones relacionadas