Boa tarde amigos,
Estou lendo o livro de Introdução à Arquitetura e Design de software e fiquei com uma dúvida em relação a criar ou não varias instâncias de um objeto.
Aqui no livro diz que “segurar objetos em memória estressa demais o GC baseado em cópia de objetos. A boa pratica de OO já diz que devemos criar pequenos objetos encapsulados, sem muitos dados estáticos, originando instãncias sem nos preocuparmos com caches e outros alegadas otimizações.” e tambem que “devemos adequar nossa aplicação a hipótese de gerações”.
Mas eu vejo por ai, inclusive na empresa onde trabalho, as classes chamadas de Core, que contém varios objetos e funcionalidades comuns a todas as classes do sistemas, e esse Core é iniciado assim que a aplicação é iniciada, criando várias instâncias dos objetos e disponibilizando-os para o resto da aplicação.
A minha dúvida é: É bom fazer assim? Ou seria melhor criar o objeto, desde que não seja pesado, toda vez que invocarmos um método get?
Um exemplo na minha aplicação é uma classe responsável por armazenar todos os repositórios (40). Esses repositórios que são instânciados assim que a classe é instanciada mesmo sendo uma classe bem simples, que recebe apenas um objeto no construtor e se serve apenas dele. Nesse caso não seria melhor guardar só a classe e criar a instância apenas quando dão um get?
Muito Obrigado