Domanda

Vorrei sapere da dove il controller riceve l'input dell'utente (per alimentare il modello). Poiché i supporti di input sono fortemente correlati all'utente, la vista non dovrebbe essere consapevole del modo concreto per ottenere i dati dell'utente? Ma come posso separare il controller dalla vista quindi? È possibile rendere entrambi completamente indipendenti l'uno dall'altro come suggeriscono i loro scopi?

Esempio: Quando ho un'applicazione che usa la libreria curses per la vista, implica che è accessibile solo attraverso il terminale. L'uso dei metodi curses per leggere i dati utente nel controller interromperebbe l'incapsulamento, ma i metodi di chiamata nella vista non avrebbero nulla a che fare con la visualizzazione del modello.

È stato utile?

Soluzione

Prendi in considerazione la possibilità di far comunicare View e Controller tramite Pattern di osservatori . Il controller si registra come osservatore con la vista. Quando l'utente immette i dati nella vista e preme Invio, la vista interpreta i dati e notifica ai propri osservatori che sono disponibili dati. Il controller può quindi ottenere i dati dalla vista tramite un metodo pubblico.

Altri suggerimenti

IN MVC, il controller ottiene l'input dell'utente dalla vista.

Non penso che la vista abbia davvero molto a che fare con l'inserimento dei dati. Trovo MVC molto più facile da visualizzare se vedi l'utente che comunica direttamente con il controller. Un controller riceve i dati dall'utente e restituisce le visualizzazioni. In molti sistemi il motore di visualizzazione ha un modo limitato di aggiornarsi (ovvero gli input di testo mostrano ciò che viene digitato prima di essere inviato al controller). Ma per qualsiasi architettura di tipo MVC è possibile sostituire qualsiasi vista con qualsiasi altra vista purché siano entrambe in grado di gestire gli stessi dati.

Ad esempio. L'immissione di un nome utente può essere eseguita su qualsiasi sistema che supporti l'immissione di stringhe. Il controller accetta una stringa e quindi può essere utilizzato in un'applicazione Web, un'applicazione terminale o un'applicazione GUI.

Penso che la vista dovrebbe avere una richiamata sul controller per inviare l'input dell'utente. Nell'architettura Web, il callback è fornito attraverso la possibilità di inviare l'input dell'utente al server tramite richieste http.

Nel tuo caso, il tuo ncurse front dovrebbe probabilmente avere un qualche tipo di metodo di callback al componente controller per inviare l'input dell'utente.

Bene,

Cercherò di essere più specifico per te. Fornire risposte vaghe / astratte per ppl che puoi vedere, non padroneggia l'argomento, non aiuta.

MVC - > Model View Controler

Ci sono molte implementazioni di MVC, non conosco il tuo caso, ma te ne darò uno.

L'implementazione MVC più comune si comporta in questo modo.

visualizza < - > Controler & Lt; - & Gt; Modello

In uno scenario web ..

La vista sarebbe le tue pagine HTML e l'inserimento dei dati avverrebbe in una forma.

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

Home sarebbe il tuo controller (una classe chiamata home) e createuser un metodo in home.

public class Home extends Controller {

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

Questo modulo invia i dati nel metodo come parametri. Createuser li avrebbe elaborati per parlare con il modello e in seguito persistere i dati in tal caso.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top