Pergunta

Qual é a melhor repartição de responsabilidade ao usar uma grade virtual e o padrão MVP em um aplicativo winforms.

incluindo:

  1. Obter retornos de chamada da rede em atualizações celulares mudaram usuário
  2. Callback da rede para definir o estilo e valor de uma célula dada uma linha e coluna
Foi útil?

Solução

As responsabilidades são em muitos padrões que são referidos como Model-View-Presenter variar. Principalmente eles variam sobre quanto controle é exercido sobre a vista pelo apresentador. Martin Fowler tem uma discussão em profundidade de um número de diferentes variantes em seu capítulo sobre GUI Arquiteturas , vale bem a pena uma leitura.

Tenha um olhar em Apresentador Primeira como ele lida com os adaptadores e as responsabilidades em alguma profundidade.

Passive View e Supervisão Controlador valem a pena olhar.

modelo (ou modelo de domínio) == representação lógica das entidades envolvidas no sistema, incluindo o seu estado e comportamento

apresentador == escutar eventos da vista (e talvez modelo) e serviço de esses pedidos, tipos de modelo converter em vista tipos (vista passiva), este é realmente o encanamento para esconder a visão eo modelo do outro. Reage ao estímulo do usuário.

vista == apresentação: a representação visual do modelo que o usuário pode interagir com, coletando entrada do usuário

As suas perguntas específicas em torno das chamadas de retorno e pegar o estilo de célula de grade são ambos vai envolver a visão manipulação de eventos de rede e elevar eventos de volta para o apresentador para requerer diligências ou recuperar dados a partir do modelo. Isto é perfeito para a chamada de retorno quando o conteúdo da célula é atualizado (isso precisa ser publicado para o apresentador para que o apresentador pode validar a mudança no modelo e fazer a mudança no modelo).
Para o estilo de célula da grade Estou a pensar que algum tipo de adaptador na visão pode precisar traduzir o estado do modelo (obtido via um evento da vista para o apresentador) para as informações de estilo de célula de grade. Isso poderia acontecer no apresentador, mas eu pessoalmente prefiro o apresentador não ter conhecimento do widget na vista.

Outras dicas

Se eu entendi corretamente, a grade é parte da implementação vista e não é visível para o apresentador. Nesse caso, o apresentador não deve precisar de saber como os dados são exibidos apenas como fornecê-los.

eu provavelmente criar uma classe auxiliar, um adaptador de algum tipo, que os comunica grade com. A grade de nada, mas esse auxiliar, idem para a vista vê.

A colaboração seria algo como:

grade <- helper <- vista <-> apresentador

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