Pregunta

Me gustaría saber de dónde obtiene el controlador la entrada del usuario (para alimentar el modelo). Debido a que los medios de entrada están fuertemente relacionados con el usuario, ¿no debería la vista ser consciente de la forma concreta de obtener los datos del usuario? Pero, ¿cómo puedo separar el controlador de la vista entonces? ¿Es posible hacer que ambos sean completamente independientes entre sí como lo sugieren sus propósitos?

Ejemplo: Cuando tengo una aplicación que usa la biblioteca curses para la vista, implica que solo es accesible a través del terminal. El uso de métodos curses para leer los datos del usuario en el controlador rompería la encapsulación, pero los métodos de llamada en la vista no tendrían nada que ver con mostrar el modelo.

¿Fue útil?

Solución

Considere que la Vista y el Controlador se comuniquen a través del Patrón de observador . El controlador se registra como un observador con la vista. Cuando el usuario ingresa datos en la Vista y presiona Enter, la Vista interpreta los datos y notifica a sus observadores que hay datos disponibles. El controlador puede obtener los datos de la vista a través de un método público.

Otros consejos

EN MVC, el controlador obtiene su entrada de usuario desde la Vista.

No creo que la vista realmente tenga mucho que ver con la entrada de datos en realidad. Encuentro MVC mucho más fácil de visualizar si ves que el usuario se comunica con el controlador directamente. Un controlador recibe datos del usuario y devuelve las vistas. En muchos sistemas, el motor de visualización tiene una forma limitada de actualizarse (es decir, las entradas de texto muestran lo que se escribe antes de enviarlo al controlador). Pero para cualquier arquitectura de tipo MVC, puede reemplazar cualquier vista con cualquier otra vista, siempre que ambas sean capaces de manejar los mismos datos.

Por ejemplo. Se puede ingresar un nombre de usuario en cualquier sistema que admita la introducción de cadenas. El controlador acepta una cadena, por lo que puede usarse en una aplicación web, una aplicación de terminal o una aplicación GUI.

Creo que la vista debería tener una devolución de llamada en el controlador para enviar la entrada del usuario. En la arquitectura web, la devolución de llamada se proporciona a través de la capacidad de enviar la entrada del usuario al servidor a través de solicitudes http.

En su caso, su frente ncurse probablemente debería tener algún tipo de método de devolución de llamada al componente controlador para enviar la entrada del usuario.

Bueno,

Intentaré ser más específico para ti. Dar respuestas vagas / abstractas para personas que puede ver, no domina el tema, no ayuda.

MVC - > Controlador de vista de modelo

Hay muchas implementaciones de MVC, no conozco tu caso, pero te daré una.

La implementación MVC más común actúa así ...

ver < - > Controler & Lt; - & Gt; Modelo

En un escenario web ..

La vista sería sus páginas HTML y la entrada de datos sucedería en un formulario.

<form action=/home/createuser method=post>
...code goes here...
</form>

Inicio sería su controlador (una clase llamada hogar), y crearía un método en casa.

public class Home extends Controller {

   public void createUser(Userform f){
      ...create user...
   }
}

Este formulario enviaría datos al método como parámetros. Createuser los procesaría para hablar con el modelo y luego persistiría los datos si ese fuera el caso.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top