[quote=nel][quote=andredf]Ok, amigos.
Com essas dicas, apesar de ter feito boa parte do programa utilizando a abordagem1, estou propenso a gastar algumas horas passando-o para a abordagem2.
Fica apenas uma dúvida, caso futuramente haja necessidade de utilizar o objeto do tipo Registro em mais de um método do tipo Arquivo, será fácil voltar à abordagem1?
Outra coisa, passar um Array considerado grande como argumento de um método, não causa problema de performance, já que o que é passado na verdade é a referência ao Array, estou certo?
[/quote]
O tamanho do objeto não altera em nada sua perfomance, o que altera é o que tu faz com esse objeto. Não tem problema alguma passar esse Array como parametro entre métodos. Sobre voltar a abordagem, sim, é relativamente simples. Veja, se você tem 5 métodos e em 4 usa o outro objeto, instanciar ele no construtor até faz sentido, porque a probabilidade de usar essa referência é significativamente alta, mas se tem os mesmos 5 e precisa dele em 2, porque fazer isso ? Por isso foi dito para estudar tua necessidade, assim, saberá como filtrar.[/quote]
Ok, entendi.
Agora outra coisa, vamos supor que no metodoA() haja um loop (podendo se repetir por milhares de vezes) e em cada iteração, o objeto do tipo Registro será utilizado, porém tendo seus atributos internos com dados diferentes. Como seria feito um código eficiente?
Vou tentar melhor explicar via código.
Algo mais ou menos assim (eu não preciso guardar as informações de cada registro lido):
[code]class Arquivo {
…
public Arquivo() {
...
}
public void MetodoA() {
while (enquanto não for final do arquivo) {
aqui executa método para ler próxima linha do arquivo
Registro registro = new Registro();
registro.obtemDadosdaLinhadoArquivo();
registro.fazAlgumaCoisa();
aqui deveria destruir o objeto registro???
} // final do while
}
}
[/code]
É melhor, no início da cada iteração (logo após o while) criar um novo objeto do tipo Registro e antes do final do while destruir o objeto? Como?
Se não destruir o objeto, a memória poderá estar carregada de milhares de objetos do tipo Registro desnecessariamente?
Se o comando Registro registro = new Registro() for colocado antes do while, fica melhor?
Ou há alguma maneira melhor de fazer isso? Usando o padrão Singleton, por exemplo?