Pergunta

... e a melhor forma de lidar com o feedback de sucesso/falha na camada de visualização.

As opções são:

doBusinessLogic(things)

ou

for (Thing thing : things) {
  doBusinessLogic(thing)
}

Supondo que queremos uma camada de visualização que receba feedback de sucesso/erro de maneira consistente (ou seja, de operações únicas ou múltiplas em objetos de valor), qual é a melhor abordagem?

Esclarecimento:

O manuseio de vários tipos de exceção jogado a partir de uma chamada de lógica de negócios na camada de visualização é pesada em código e também causa problemas de manutenção (novas exceções são introduzidas sobre as quais a camada de apresentação não sabe). Parece melhor para a chamada de lógica de negócios lidar com erros em vários objetos de valor e 'embalagem' para que a vista lide de maneira consistente.

Foi útil?

Solução

Que tal algo parecido com a sua última sugestão:

for (businessObject : businessObjects) { businessObject.doBusinessLogic() }

A idéia é colocar a lógica de negócios em um método do objeto de negócios. Sua camada de visualização pode atravessar todos os objetos de negócios, dizendo a cada um para fazer seus negócios. Como cada um deles está na lógica do objeto de negócios na camada de negócios. Você pode lidar com erros e outros retornando valores do método DobusinessLogic ou lançando exceções para ocorrências desagradáveis.

Se você estiver fazendo lógica de objeto cruzado (ou seja, lógica que opera em mais de um único objeto de negócios), talvez você possa criar uma classe BusinessObjectManager que possa ter métodos que capturem um ou mais objetos de negócios e operem neles. Assim, ao colocar o objeto do gerente na camada de negócios, você ainda mantém toda a sua lógica de negócios na camada de negócios.

Outras dicas

Por fim, fui para a opção anterior e criei uma classe "Bundle Resultado" genérico leve que encapsula sucessos e falhas de uma ação em uma coleção de objetos. Um sucesso ou falha é digitado para o identificador de objeto correspondente.

Um Bundlesis povoou dentro de cada chamada de lógica de negócios e retornou à camada de visualização. Exceções lançadas no loop lógico de negócios 'executar ação no objeto' são capturadas e uma falha correspondente adicionada ao pacote de resultados (com chave para o ID do objeto).

A camada de visualização possui um método auxiliar simples que apresenta o feedback contido no pacote de resultados para o usuário.

Isso funciona muito bem.

Eu acho que a abordagem que você adota é o que melhor se encaixa no seu sistema.

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