Ultimamente tenho lido que o “Anti-Pattern” Singleton pode ser substituído por Injeção de Dependências.
Procurei por um exemplo simples porém, não encontrei.
Como poderia refatorar este trecho por Injeção de Dependência?
[code]class Singleton() {
private static String instance = null;
private Singleton() // private Construtor
{
}
public static String getInstance()
{
if(instance == null)
{
instance = //get something
}
return instance;
}
[/code]
Att.
ou por Inversão de Controle?
Segue 3 exemplos. Para entender o @Service e @Component vc deve ler a documentação do Spring, da mesmo forma o @Named e @Inject com a documentação do CDI(JEE 6).
Com singleton:
[code]class Servico {
private static Servico instance = new Servico();
private Servico()…
public static Servico getInstance()…
}
class Cliente {
private Servico servico = Servico.getInstance();
}[/code]
Com Spring:
[code]@Service
class Servico {
…
}
@Component
class Cliente {
@Autowired(required = true)
private Servico servico;
}[/code]
Com CDI do JEE 6:
[code]@Named
class Servico {
…
}
@Named
class Cliente {
@Inject
private Servico servico;
}[/code]
hummm isso me ajudou pacas vlw ai! rafaduka