Pergunta

Estou brincando com a construção de um BLL para minha aplicação. Pelo que eu vi / li, parece que o BLL deve estar sem estado. Isso não significa que todos os métodos BLL podem ser estáticos? Ou eu pelo menos eu precisava apenas de uma instância de cada classe BLL? O que me parece estranho por algum motivo, então eu pensei que é melhor verificar que não estava conseguindo o fim errado do bastão antes de mergulhar muito longe na minha experimentação.

Também estou pensando que isso significa que os objetos BLL nunca devem conter dados, porque os dados representam o estado - portanto, para cada operação BLL invocada, quaisquer dados necessários precisam ser necessários (ou buscados no cache) e depois descartados. Isso soa certo?

Obrigado.

Foi útil?

Solução

Em teoria, sim, um BLL sem estado pode significar que todos os métodos podem ser estáticos.

No entanto, existem algumas considerações que podem levar você a usar instâncias de objetos BLL em vez de estática.

  1. Os métodos estáticos introduzem acoplamento apertado entre as classes e impedem que você use interfaces EG para acoplar frouxamente as dependências. O uso de interfaces melhora a testabilidade do BLL, pois agora ele pode ser ridicularizado ao escrever testes de unidade para a camada de serviço. Se seus métodos BLL forem estáticos, geralmente você não poderá fazer isso sem 'soluções alternativas' (por exemplo, você precisaria TypeMock ou Microsoft Fakes em um ambiente .NET).

  2. Em um método BLL complexo (por exemplo, grande lógica de transação), você pode refatorar cada uma das suas regras de negócios em vários métodos discretos e, na produção, possivelmente acumular todas as violações de validação e regra em um único resultado agregado contendo todos os violações. Nesse caso, pode ser complicado desviar a entidade / entidades a serem validados e acumular as violações da regra e, em vez disso, optar por armazenamento com estado em uma instância de classe. Uma classe base ou genérica para sua instância BLL pode ajudar aqui.

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