Pergunta

Eu gostaria de saber onde o controlador recebe a entrada do usuário (para alimentar o modelo com). Como a mídia de entrada está fortemente relacionado com o usuário não deve a vista estar ciente da maneira concreta para obter os dados do usuário? Mas como eu posso separar o controlador do ponto de vista, então? É possível fazer ambos completamente independentes um do outro como seus propósitos sugere?

Exemplo: Quando eu tiver um aplicativo que usa a biblioteca maldições para a vista isso implica que o é apenas acessível através do terminal. Usando métodos maldições para ler os dados do usuário no controlador iria quebrar encapsulamento mas chamar métodos sobre o ponto de vista teria nada a ver com a exibição do modelo.

Foi útil?

Solução

Considere ter a vista e controlador de comunicar através da Observer padrão . O controlador regista-se como um observador com a View. Quando os dados de entradas de usuários para a vista e pressiona Enter, em seguida, o Ver interpreta os dados e notifica seus observadores que não há dados disponíveis. O controlador pode, em seguida, obter os dados a partir da visão através de um método público.

Outras dicas

IN MVC, o controlador recebe o entrada do usuário a partir do View.

Eu não acho que a visão realmente tem muito a ver com a introdução de dados na verdade. Acho MVC muito mais fácil visualizar se você vê o usuário como se comunicar com o controlador diretamente. Um controlador recebe dados do usuário e envia vistas de volta. Em muitos sistemas o mecanismo de exibição tem alguma forma limitado de actualização em si (entradas de texto ou seja, mostrar o que é digitado antes de ser enviado para o controlador). Mas para qualquer tipo de arquitetura MVC você pode substituir qualquer vista com qualquer outro ponto de vista, desde que estejam ambos capazes de lidar com os mesmos dados.

Por exemplo. Introduzir um nome de usuário pode ser feito em qualquer sistema que suporta entrar strings. O controlador aceita uma corda, e assim pode ser usado em uma aplicação web, uma aplicação de terminal ou um aplicativo GUI.

Eu acho que a visão deve ter um retorno de chamada no controlador para enviar mais entrada do usuário. Na arquitetura web, o retorno é fornecido através da capacidade de enviar a de volta a entrada do usuário para o servidor através de HTTP solicitações.

No seu caso, a sua frente ncurse provavelmente deve ter algum tipo de método de retorno para o componente controlador para enviar a entrada do usuário de volta.

Bem,

Vou tentar ser mais específico para você. Dando vaga / respostas abstratas para o ppl que você pode ver, não dominar o assunto, a ajuda não funciona.

MVC -> Model View Controler

Há muitos implementação de MVC, eu não sei o seu caso, mas vou dar-lhe um.

A implementação mais comum MVC age como esta ..

Ver <-> Controler <-> Modelo

Em um cenário de web ..

A vista seria suas páginas HTML e entrada de dados que aconteceria em um formulário.

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

Início seria seu controlador (uma classe chamada casa), e createuser um método em casa.

public class Home extends Controller {

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

Esta forma iria enviar dados para o método como parâmetros. Createuser faria deles processado para falar com o modelo e depois manter os dados se isso é o caso.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top