[Resolvido] Singleton para Injeção de Dependências

4 respostas
rafaduka

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?
class Singleton() {

private static String instance = null;

private Singleton() // private Construtor
{
}

public static String getInstance() 
{
   if(instance == null) 
   {
      instance = //get something
   }
    return instance;
}

Att.

4 Respostas

rafaduka

ou por Inversão de Controle?

L

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:
class Servico {
  private static Servico instance = new Servico();
  private Servico()...
  public static Servico getInstance()...
}

class Cliente {
  private Servico servico = Servico.getInstance();
}
Com Spring:
@Service
class Servico {
  ...
}

@Component
class Cliente {
  @Autowired(required = true)
  private Servico servico;
}
Com CDI do JEE 6:
@Named
class Servico {
  ...
}

@Named
class Cliente {
  @Inject
  private Servico servico;
}
rafaduka

Muito obrigado lsjunior.

Outro link que me ajudou a entender também: http://www.arquiteturajava.com.br/livro/inversao-de-controle-cade-minha-chave-de-fenda.pdf

marllondsp

hummm isso me ajudou pacas vlw ai! rafaduka

Criado 24 de novembro de 2011
Ultima resposta 24 de nov. de 2011
Respostas 4
Participantes 3