desculpe cara, eu não entendi a sua dúvida, o que você está fazendo é criar o objeto apenas quando ele não existe
inicialização tardia - no meu ponto de vista - é você criar o objeto apenas no momento anterior ao que ele for necessário
um suposto caso de inicialização tardia é o famoso lazy initialization do hibernate… ( neste caso o tabela só será mapeada pelo objeto quando seu uso for necessário )
um exemplo de código pode ser visto na wikipedia
importjava.util.*;publicclassFruit{privatestaticfinalMap<String,Fruit>types=newHashMap<String,Fruit>();privatefinalStringtype;// using a private constructor to force use of the factory method.privateFruit(Stringtype){this.type=type;}/** * Lazy Factory method, gets the Fruit instance associated with a * certain type. Instantiates new ones as needed. * @param type Any string that describes a fruit type, e.g. "apple" * @return The Fruit instance associated with that type. */publicstaticsynchronizedFruitgetFruit(Stringtype){if(!types.containsKey(type))types.put(type,newFruit(type));// Lazy initializationreturntypes.get(type);}}
masreis
Minha questão é no seguinte contexto: Usar injeção de dependência é melhor?
Além desse recurso (ID), que outros temos nesse sentigo?
Tem dado muito trabalho e não parece muito eficiente, principalmente para atualizações.
Ouvi alguem dizer que existem outras alternativas. Alguém sabe do que se trata?!?!?!
Alexandre_Saudate
Injeção de dependências não precisa, necessariamente, de um contêiner. Você pode usar até o construtor do objeto para passar a dependência para ele. Ou seja, no seu caso, você não teria o f == null, mas sim, retornaria direto. Só teria que ter o cuidado de sempre passar uma dependência válida pelo construtor.