2010-04-18 12 views
5

He leído muchos artículos sobre arquitectura MVC, pero todavía estoy confundido.Implementación correcta de la arquitectura MVC

  • ¿Cuál diagrama es el correcto?
  • ¿Existe una implementación correcta de la arquitectura MVC?
  • ¿Podría utilizar una implementación diferente de la arquitectura MVC?

Diagrama 1

Diagram 1 http://img219.imageshack.us/img219/4576/screenshot20100418at213.png

Diagrama 2

Diagram 2 http://img38.imageshack.us/img38/4576/screenshot20100418at213.png

Diagrama 3

Diagram 3 http://img526.imageshack.us/img526/3900/screenshot20100418at214.png

+2

¿qué representan las flechas? – mkorpela

+0

¿quizás las flechas significan dependencia/visibilidad? –

Respuesta

8

MVC puede ser entendido por el pensamiento de responsabilidades:

la vista no se le permite cambiar el estado del modelo directamente - sólo a través del controlador. La vista aún puede tener acceso directo al Modelo aunque solo para visualizarlo (o tener una copia que no sea el Modelo oficial).

El modelo debe vivir en su propio universo y no tener ninguna referencia a controladores o vistas.

El controlador controla el estado y el acceso al modelo.

+0

Esta es la respuesta correcta. –

+0

En la realidad, el modelo siempre debe tener una referencia al controlador, no importa si a través de algún protocolo de red o directamente mediante el puntero/referencia C++/JAVA. Sería inaccesible de lo contrario ... BTW: la mayoría de las implementaciones de MVC de hoy (Android, Windows WPF, Qt) no son MVCs puros. Creo que es principalmente por motivos de rendimiento. Podemos hablar de un MVC puro solo si no hay nada más que acceso indirecto a los datos del Modelo, generalmente a través de mensajes XML. – vitakot

+1

@vitakot: No entiendo por qué piensas que el modelo necesitaría saber algo sobre los otros componentes: puedes acceder al modelo sin que tenga referencia sobre ti ... – mkorpela

0

Mi estrategia para el aprendizaje de buenas técnicas de MVC era encontrar a alguien que conocía y pedir un montón de preguntas. Preguntarnos a un grupo de nosotros que no conocemos sus requisitos, sus intenciones o sus ideas no hace mucho bien.

En mi opinión, el Diagrama 1 sería considerado el "mejor" diagrama, pero sin conocer su situación particular, sería mejor que explicara sus necesidades a alguien más que conozca sus requisitos y la arquitectura MVC.

1

Definitivamente no Diagrama 3! El diagrama 1 está bien. Creo que lo mejor es básicamente el Diagrama 2 con una flecha de Controlador a Vista.

Suponiendo que usted está pidiendo en el contexto de las aplicaciones web, aquí es lo que creo que un buen flujo MVC se ve así:

  1. Cuando viene una petición web, es uno de los 2 tipos.

    Tipo A - esto es una petición simple que directamente se asigna la vista, por lo que no hay ningún controlador está involucrado

    Tipo B - esto es la solicitud que se asigna a un controlador

  2. Para ambos tipos A y B a view siempre lee los datos de los modelos directamente

  3. Si se trata de una solicitud de tipo B, el controlador lee/actualiza los modelos y, cuando termine, solicita al framework MVC que devuelva una vista al cliente. La vista lee los modelos de actualización y los procesamientos para el cliente.

Este es el enfoque apoyado por el Induction MVC framework.

Espero que esto ayude.

+0

Gracias, esto realmente me ayudó. –

Cuestiones relacionadas