Pergunta

Assim, para o meu projeto atual, existem basicamente três principais classes Java:

  1. GUI
  2. Instant Messaging
  3. Computação

Essencialmente, é preciso haver uma comunicação completa, assim nós decidimos usar a abordagem de mediador em vez de do que permitir que a GUI para executar todo o projeto.

Basicamente, o mediador vai encapsular a comunicação. O problema que tenho que correr para é como permitir que os componentes GUI para atualizar sem construir uma tonelada de métodos para o mediador para algo concluída chamar a qualquer momento.

Ex. Dizem que o GUI quer login do usuário, ele passa pelo mediador para criar um segmento e entrar, mas, em seguida, o mediador tem de retransmitir a volta sucesso / fracasso em GUI, bem como atualização de uma mensagem de status.

A outra questão é que as coisas que precisam atualizar o GUI, mas não precisa o moderador. É prático para apenas permitir que a GUI para criar uma instância dessa classe e executá-lo ou deve tudo ir através do mediador?

Nosso projeto original só tinha o GUI gerir tudo, mas ele realmente matou reutilização. Existe um método melhor design para utilização neste caso?

Foi útil?

Solução

Se você está encontrando Observer trazer muita sobrecarga, Mediator pode ser o melhor caminho a percorrer. Eu definitivamente acho que você não deve ter o GUI executar o show. Se você estiver indo para usar o padrão de mediador, o próprio mediador deve estar no comando. Algo que você pode considerar é uma variante do padrão de comando. Se você estivesse usando Ruby, eu poderia recomendar passando retornos de chamada de função em torno de como um meio de evitar ter o contato mediador do GUI para cada pequena coisa. Mas já que é Java, alguma forma de encapsular uma ação no estilo padrão de comando pode ajudar.

Outras dicas

Se você não quer que o retorno de chamada / notificação para ser triggerd pelo mediador, você pode injetar o retorno de chamada para a função de login e ter o login chamá-lo quando ele terminar.

Eu não sei como você iria sobre injetar o retorno de chamada em Java, no entanto. Em uma linguagem onde as funções são cidadãos de primeira classe, você poderia simplesmente passar a função, mas você está em Java, então eu acho que você terá que usar o padrão de comando como kmorris sugeridas.

Você também pode tentar ter a GUI dar o mediador um objeto de retorno de chamada que lida com a recuperação de valores de retorno ou a definição de qualquer valor que você precisa (uma versão do padrão Command). Haveria, então, um por chamada da GUI para o mediador.

Outro pensamento é agrupar os métodos as chamadas mediador em pedaços semanticamente relacionados. Em particular, se o mediador tem seções onde ele tende a chamar vários métodos GUI em uma fileira:

   gui.a()
   gui.b()
   gui.c()

Você pode criar um único método que manipula o resultado de chamar todos os três. A vantagem de métodos semanticamente agrupadas (ou seja setFileInformation sobre setFileMenu, setTab, etc.) também é, em seguida, se você precisa mudar a GUI, o conteúdo dos métodos podem mudar, mas a chamada dos mediadores marcas podem não.

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