"Olá, amigo! Sou eu - de novo. Quero dar a você outro ponto de vista sobre interfaces. Veja bem, na maioria das vezes uma classe é um modelo de um objeto específico. Por outro lado, as interfaces são mais como as habilidades de um objeto ou papéis, ao invés do objeto em si."
Por exemplo, coisas como carros, bicicletas, motocicletas e rodas são melhor representadas como classes e objetos. Mas suas habilidades, como «posso me mover», «posso carregar pessoas» e «posso estacionar», são melhor representadas como interfaces. Confira este exemplo:
código Java | Descrição |
---|---|
|
Corresponde à capacidade de movimento. |
|
Corresponde à capacidade de movimento. |
|
Corresponde à capacidade de transportar carga. |
|
Uma aula de «roda». Tem a capacidade de se mover. |
|
Uma aula de «carro». Tem a capacidade de se mover, ser conduzido por uma pessoa e transportar carga. |
|
Uma aula de «skate». Tem a capacidade de se mover e ser controlado por uma pessoa. |
As interfaces simplificam muito a vida do programador. Os programas geralmente têm milhares de objetos, centenas de classes e apenas algumas dezenas de interfaces (funções). São poucos papéis, mas podem ser combinados de várias formas (classes).
O ponto principal é que você não precisa escrever código definindo a interação com todas as outras classes. Tudo o que você precisa fazer é interagir com funções (interfaces).
Imagine que você é um construtor robótico. Você tem dezenas de robôs subordinados e cada um deles pode ter várias habilidades. Suponha que você precise terminar de construir uma parede com urgência. Você apenas pega todos os robôs que têm a capacidade de "construir" e diz a eles para construir o muro. Você realmente não se importa com quais robôs fazem isso. Que seja um regador robótico. Se ela sabe construir, deixe-a construir.Veja como ficaria no código:
código Java | Descrição |
---|---|
|
Capacidade de «construir uma parede». Compreende o comando «construir uma parede» (tem o método adequado). |
|
Robôs que possuem essa habilidade/habilidade.
Um regador não pode construir uma parede (ele não implementa a interface WallBuilder). |
|
Como damos a ordem para construir um muro? |
"Isso é incrivelmente interessante. Nunca sonhei que as interfaces pudessem ser um tópico tão interessante."
"E mais alguns! Juntamente com o polimorfismo, é totalmente alucinante."
GO TO FULL VERSION