Pergunta

Eu escrevi um projeto MVP, onde a visualização é um Winform que implementa minha interface IView. Estou no processo de revisar o código, melhorando -o onde posso e gostaria de perguntar sobre como a visualização e o apresentador interagem. Qual das alternativas a seguir é a melhor prática em sua opinião?

  1. Exponha métodos da classe do apresentador para que a visualização use. (ou seja, torne -os públicos).
  2. Peça ao apresentador que ouça os eventos levantados pela classe de exibição.

Por exemplo, meu MVP usa um serviço que se comunica através de um Serialport. Para conectar -se ao dispositivo remoto, minha exibição chama o método do apresentador público conect () que chama os métodos de serviço apropriados.

Seria melhor prática criar um evento Connect () e fazer o apresentador ouvir?

Foi útil?

Solução

Geralmente trabalho para que a visualização dependa do apresentador e o apresentador dependa do modelo. Isso significa que o mesmo modelo pode ser usado por vários apresentadores e o mesmo apresentador pode ser usado minhas várias visualizações (diferentes layouts da interface do usuário, ou Winforms vs Web etc). Para facilitar isso, a exibição chama métodos públicos no apresentador e ouve eventos do apresentador para dizer quando os dados foram alterados.

Para um exemplo de por que você pode querer trabalhar dessa maneira, imagine uma interface que tenha duas visualizações uma para um usuário iniciante e outro para um especialista, com a visualização para iniciantes mostrando um subconjunto dos comandos de especialistas. Se o mesmo apresentador for usado para ambas as visões, a visualização para iniciantes precisará expor os eventos para todos os comandos de especialistas, pois o apresentador precisa que eles estejam lá para que possa se vincular a eles - mesmo que nunca sejam acionados. Por outro lado, o apresentador pode expor os métodos para todas as opções de especialistas e a visualização para iniciantes nunca os chama, isso significa que nem a visualização nem o apresentador estão implementando funcionalidade não utilizada.

Outras dicas

A diretriz que eu seguiria aqui é: "Os métodos públicos no apresentador devem ser parâmetros. . " . Aberto a sugeestões e comentários.

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