Criar uma instânciado tipo de uma inteface ou de uma classe concreta?

6 respostas
rmello

Boa tade pessoal,

Estou estudando um exemplo onde existe um inteface ProdutoDAO, e uma classe ProdutoDB de implementa ProdutoDAO.

Um uma outra classe é criado a seguinte instância:

ProdutoDAO dao = new ProdutoDB();

Qual é a diferença e/ou vantagem de se instânciar da forma acima ou da seguinte forma?

ProdutoDB dao = new ProdutoDB();

Considerando que como ProdutoDB implementa ProdutoDAO, e portando ProdutoDB é um ProdutoDAO.

Abraços,
Renato.

6 Respostas

Rodrigo_Sasaki

Leia nesse post uma explicação bem detalhada da flexibilidade que você ganha, quando programa orientado à interface:

rmello

Achei as explicações confusas, mas vou pesquisar sobre polimorfismo.

Valeu pela ajuda.

W

Amigo você em uma classe que implementa de uma interface e você está querendo da um new?

W

Vai a dica, isso é feito com injeção de dempendência, caso queira usar o spring.

@Controller
public class exemploBean(){

@Autowired
private ExemploInterface exempoInterface;

}

dessa forma você injeta a dependência.

Se você etiver usando Jee6

public class exemploBean(){

@Inject
private ExemploInterface exempoInterface;

}

ok amigo para seu caso terá que usar injeção de depedência.

rmello

Wesllhey,

Sou novato em Java, mas pelo que estou estudando, não estou fazendo um new em uma interface e sim em uma classe concreta produtoDB mas usando do tipo interface produtoDAO.

abs.

renanjp

Saldações companheiro, vou tentar te ajudar…

Quando você faz uma interface esta estabelecendo um “contrato”, ou seja…
Quem implementar a interface, vai ter que seguir as suas especificações…

Isso garante o baixo acoplamento de seu sistema…

Agora… Porque utilizar isso? Como se utilizar?

Imagine a seguinte interface:

public interface IPessoaDAO {
	public abstract void save(Pessoa pessoa);
	public abstract void update(Pessoa pessoa);
}

O que este contrato estabelece?
Ele estabelece que o essencial para garantir a persistencia da minha classe Pessoa sejam “servido” os metodos save e update…

Agora o segredo esta em: Como estes metodos serão implementados?
R: Não preciso saber… só tenho que saber que quem for me “atender” (quem sera instanciado) servirá esta especificação…

Eu posso ter n classes que implementem IPessoaDAO…
O que me importa é que elas serão obrigadas a me fornecer os metodos especificados…

Com isso é possivel usar Injeção de dependencia…
uma estratégia muito boa…

Espero que tenha ajudado…
Att

Criado 17 de julho de 2012
Ultima resposta 18 de jul. de 2012
Respostas 6
Participantes 4