Pergunta

Eu não estou usando hibernate e isso não é uma alternativa válida em tudo. Eu desenvolvi um quadro baseado em ADO.NET. Este quadro tem operadores padrão para cada entidade do banco de dados.

Por exemplo, camadas de acesso de dados tem operadores padrão como o seguinte:

Insert
Update
Delete
Get
GetAll

Para acessar estes métodos, nós trabalhamos como tha código de exemplo abaixo:

DataAccess.Order daoOrder;

Entity.Order entityOrder;
DataAccess.Order daoOrder;

entityOrder = new Entity.Order();
entityOrder.ID = 1090;

daoOrder = new DataAccess.Order();
daoOrder.Insert(entityOrder);

Eu estava pensando sobre métodos de utilização estáticos, de modo que o código seria simples como:

Entity.Order entityOrder;

entityOrder = new Entity.Order();
entityOrder.ID = 1090;

DataAccess.Order.Insert(entityOrder);

Suponha que o sistema tem 30 mesas e 30 entidades. Precisamos de 30 DataAccess execução objetos como estáticos objetos. Esta estrutura estática iria nos salvar alguns ciclos de processador e poupar algum memória como seus custos menos para coletor de lixo.

Devo métodos uso estáticos para negócios e DataAccess operadores comuns nestes maneira? Você pode falar sobre vantagens e desvantagens sobre esta abordagem? (Quero dizer, memória, desempenho ...)

Foi útil?

Solução

O diferencial de desempenho entre as duas opções que você menciona acima será praticamente inexistente. Gostaria de ir para o design mais limpo e mais flexível você pode gerenciar, tendo em conta o seu modelo de domínio e outros requisitos de negócios, e depois se preocupar com o ajuste de desempenho uma vez que está instalado e funcionando; não tente adivinhar os gargalos antes que você construiu seu sistema.

Veja este post por Greg Beech para uma análise de estática versus desempenho instância ..

A sua conclusão:

em chamar um método de dois bilhões de vezes que você poderia salvar-se em torno de 5ms, tornando-estática, que é uma economia de aproximadamente nada para cada chamada de método

Outras dicas

Se você usar métodos estáticos nesta classe, cada objeto que irá interagir com ele será altamente juntamente com ele. Como a matéria de fato o seu código não é bem-testável. Se eu fosse você eu evitar o uso de métodos estáticos / classes, bem como Singletons. A menos que você não quer test-drive a sua aplicação.

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