2009-06-27 9 views
5

Apple describe el patrón arquitectónico utilizado por las aplicaciones de iPhone como MVC. Sin embargo, prácticamente ninguna aplicación moderna usa MVC (como lo describe Trygve Reenskaug). Los sistemas operativos modernos, incluido el iPhone OS, manejan inherentemente las responsabilidades del controlador. Lo que erróneamente y comúnmente se conoce como MVC es en realidad MVP.¿Por qué Apple dice que las aplicaciones de iPhone usan MVC?

¿Por qué Apple dice MVC y no MVP?

+0

stackoverflow se construyó utilizando MVC –

+0

"prácticamente ninguna aplicación moderna utiliza MVC". ¿Hay una fuente para esto? Me gustaría saber más al respecto. – huggie

Respuesta

18

¡Hola! Esta es ciertamente una buena pregunta, y es una de la que no estoy seguro de saber la respuesta. Creo que Apple usa el término MVC casi universalmente porque muchas de las vistas en Cocoa/AppKit usan enlaces de datos para extraer datos directamente del modelo y esto rompe con el patrón de MVP. En el siguiente diagrama (desde This article), el modelo MVP muestra todos los datos que se mueven a través del presentador, y este generalmente no es el caso para las aplicaciones Cocoa bien construidas.

En la mayoría de las aplicaciones de Cocoa, los enlaces de datos y la observación de valores-clave se utilizan para vincular la vista y el modelo sin requerir la interacción del controlador para actualizarlos. Además, en las aplicaciones de Cocoa hay un controlador principal que determina cuándo y dónde se cargan las vistas. Para tomar prestado de la respuesta de glenn_block a this question:

En el MVC, el controlador está responsable de determinar qué Ver aparece en respuesta a cualquier acción incluso cuando se carga la aplicación. Esto difiere del MVP donde las acciones se envían a través de la Vista al presentador .

alt text http://blog.vuscode.com/blogs/blogs/malovicn/WindowsLiveWriter/ModelViewPresenterMVPVSModelViewControll_1327B/image_15.png

Espero que ayude! Podría ser una decisión totalmente aleatoria por parte de Apple, pero creo que su elección es razonable.

+0

En el modelo de cacao y la vista no interactúan directamente como mvc. En realidad es MVP de la variante de visión pasiva. – Tinku

+1

En su diagrama de MVP, ¿qué significa ese círculo entre la vista y el presentador? (flecha roja que apunta al círculo verde) – huggie

+0

El enlace al diagrama está roto. Además, el círculo en el mismo significa probablemente la interfaz pública expuesta por la Vista (que el presentador usa para solicitar los datos de la Vista y/o actualizar la Vista, como se ve aquí [https://richnewman.wordpress.com/2008/] 02/26/model-view-presenter-variations-on-the-basic-pattern-introduction-to-cabscs-part-24 /)). – Piovezan

8

En la mayoría de las aplicaciones de Cocoa, los enlaces de datos y la relación valor-valor se utilizan para vincular la vista y el modelo sin necesidad de la interacción del controlador para actualizarlos. Blockquote

I disagree.

De acuerdo con Paul Hegarty, profesor de Stanford del curso CS193P (Programación en iOS7), el Modelo en Cocoa nunca habla con la Vista. He visto todos los cursos (2011, 2012, 2013, todos están disponibles de forma gratuita en iTunesU), y cada vez que repite esto. En el curso de otoño de 2013, él hace el ejemplo de una lista de canciones (su modelo) que puede desear mostrar en su iPhone (como vista): la vista le pide al controlador un montón de canciones para mostrar, y es deber del controlador para hablar con el modelo, tomar algunas canciones y empujarlas a la vista. La vista solo mostrará canciones. La vista nunca contiene datos del modelo.

Él dice que el KVO (observación del valor clave) es un patrón para la comunicación entre el Modelo y el Controlador. No hay enlace.

Creo que "Apple MVC" == "Microsoft MVP".

"Microsoft MVC" es solo para la web y se llama "ASP.NET MVC 4". En la web, el controlador es el "punto de entrada de entrada de usuario", mientras que en el escritorio/táctil es la vista

Cuestiones relacionadas