Interfaces?

Eu sei que as interfaces contém assinaturas de métodos que devem ser implementados pelas classes que os utilizam.
A dúvida é a seguinte: - Quando devo utilizar interfaces?? É uma boa pratica de programação criar interfaces contendo métodos para cada uma das classes de um sistema??

Abraços!

vc não vai criar interfaces para todas classes do sistema… cada caso é um caso… seila, acho que não vou ser muito didático explicando isso hehe tenta ler esses links por exemplo, acho que explica melhor… é tudo uma questão de entender certinho para que elas servem, e ai vc vai saber quando criar ou não uma.

http://www.devmedia.com.br/articles/viewcomp.asp?comp=4976
http://www.artima.com/designtechniques/interfaces.html

[quote=“shadowman”]Eu sei que as interfaces contém assinaturas de métodos que devem ser implementados pelas classes que os utilizam.
A dúvida é a seguinte: - Quando devo utilizar interfaces?? É uma boa pratica de programação criar interfaces contendo métodos para cada uma das classes de um sistema??

Abraços![/quote]

Definitivamente não é uma boa prática criar interfaces para todas as suas classes.
Vc deve utilizar interfaces para criar desacoplamento.
Interfaces permitem definir quais os métodos disponiveis, sem definir qual a sua implementação. Então , elas são usadas para proteger a implementação especifica da classe da outras classes que a vão usar.

Um exemplo classico é a interface java.sql.Connection. Ela representa uma conexão ao banco de dados. Como não é uma classe a interface por si mesmo não faz nada. Ai entra o drivver do banco de dados que fornece a sua implementação dessa interface. Quando vc usa , vc trabalha com Connection e nunca sabe que classe o driver realmente criou.
Desta forma cada driver de banco de dados pode fornecer a sua implementação, usando as suas tecnologias. A interface atua como um padronizador.

Outro exemplo classico é o uso das colecções do java.
Sempre que criar um método que aceita ou retorna colcçoes como List , Set ou Map , vc deve usar interfaces. Assim , vc não limita o seu método a trabalhar com apenas uma classe de colecção. A interface atua como um contrato, um acordo.