Dúvida quanto ao uso da interface + DAO + "tela"

Bom dia galera, estou lendo e procurando bastante mas quanto mais eu leio mais eu me atrapalho hehe;
Minha dúvida está em como acessar os métodos da interface ( se é que é isso que tenho que fazer );

A interface consiste em publicar os métodos que utilizarei correto ? Para que eu não acesse o meu DAO (por exemplo) diretamente na UI, então a minha classe DAO irá implementar os métodos da interface, certo ? e na “tela” como eu acesso estes métodos ? não posso instaciar uma interface… nem criar métodos static na interface,

Então onde é que eu me atrapalhei ? hehe

[code]public interface ControladorPessoa {

    public boolean inserePessoa(PessoaN pessoa);

}[/code]

[code]public class PessoaDAO implements ControladorPessoa {

  public boolean inserePessoa(PessoaN pessoa){
  //implemetação
  }

}[/code]

public class CadastroPessoaN extends javax.swing.JDialog{ //? como acesso os métodos aqui ? não é correto instanciar o DAO é ?, já tenho a interface.... }

Não vou entrar no mérito da sua modelagem, se é correto acessar o DAO diretamente da “tela” ou não, mas para o uso da interface, você cria a variável com o tipo da interface, e instancia a classe concreta, assim:ControladorPessoa controlador = new PessoaDAO(); Parecido com o que você faz ao instanciar uma coleção List<String> lista = new ArrayList<String>();

Pocha! Muito obrigado, e isso porque assim eu terei acesso aos métodos publicados na interface porém com a implementação da classe concreta que eu intanciar certo !?

Exato, essa é a ideia de programar para interface, e não para a implementação.

Se um dia você quiser/precisar mudar a implementação, tudo fica muito mais fácil.

Leia esse post do ViniGodoy, é muito explicativo.

[RESOLVIDO]?

Abraço

[RESOLVIDO]