Quem deve registrar ouvintes de entrada: o controlador ou a exibição? (MVC)

5

Estou usando um (C ++) SDK (Marmalade) e criando um projeto em torno do padrão MVC. No meu aplicativo, os ouvintes de entrada do usuário podem ser registrados em determinados elementos da interface do usuário / widgets / etc, fornecendo uma função de retorno de chamada adequada (de acordo com o MVC deve ser um método de um controlador, certo?).

Nesse cenário, quem deve registrar esses ouvintes:

  • O controlador? (deve ter acesso aos elementos da interface do usuário da visualização, menos desacoplamento do controle da apresentação)
  • Ou a vista? (acesso direto aos elementos da interface do usuário, mas deve ter uma referência ao controlador, isso não está incorreto no MVC?)

Entre os dois, acho que o último faz mais sentido e faz melhor separação de preocupações, mas receio que tenha negligenciado algum problema com esse design.

Obrigado antecipadamente.

    
por pedrosanta 20.05.2012 / 08:10
fonte

2 respostas

3

Depende do tipo de MVC desejado. Eu sugiro que você experimente a "humilde caixa de diálogo" do Michael Feather , que também é chamada de "model view presenter (MVP)", e Provavelmente o que você está procurando.

Nesta variante, a visão tem uma referência ao controlador, e o controlador tem uma referência a uma interface abstrata da visão. Assim, a visualização pode fornecer métodos para registrar os ouvintes, esses métodos também estão disponíveis na interface e o controlador chamará esses métodos sem ter acesso direto à interface do usuário.

    
por 20.05.2012 / 08:23
fonte
0

Se eu entendi a pergunta corretamente, e eu duvido que sim, a resposta é nenhuma das opções acima. Registrar os ouvintes de eventos com suas fontes geralmente deve ser responsabilidade de uma terceira parte, um construtor de algum tipo que construa o sistema e o inicie.

    
por 20.05.2012 / 09:06
fonte