Breve história: Um carteiro é solicitado a ir para casa depois de casa e receber as capas (cartas, documentos, cheques, cartões-presente, inscrição, carta de amor) com o endereço escrito para entregar.
Suponha que não haja cobertura e peça ao carteiro que volte para casa depois de casa e receba todas as coisas e entregue a outras pessoas, pois o carteiro pode ficar confuso.
Então é melhor envolvê-lo com capa (em nossa história, é a interface), para que ele faça seu trabalho bem.
Agora, o trabalho do carteiro é receber e entregar apenas as capas (ele não se incomodou com o que está dentro da capa).
Crie um tipo de tipo interfacenão real, mas implemente-o com o tipo real.
Criar interface significa que seus componentes se encaixam facilmente no restante do código
Eu te dou um exemplo.
você tem a interface AirPlane como abaixo.
interface Airplane{
parkPlane();
servicePlane();
}
Suponha que você tenha métodos em sua classe de planos Controller, como
parkPlane(Airplane plane)
e
servicePlane(Airplane plane)
implementado em seu programa. Não quebrará seu código. Quero dizer, ele não precisa mudar desde que aceite argumentos como AirPlane.
Porque ele vai aceitar qualquer avião apesar tipo real, flyer, highflyr, fighter, etc.
Além disso, em uma coleção:
List<Airplane> plane; // Vai pegar todos os seus aviões.
O exemplo a seguir irá esclarecer sua compreensão.
Você tem um avião de combate que o implementa, então
public class Fighter implements Airplane {
public void parkPlane(){
// Specific implementations for fighter plane to park
}
public void servicePlane(){
// Specific implementatoins for fighter plane to service.
}
}
A mesma coisa para o HighFlyer e outras classes:
public class HighFlyer implements Airplane {
public void parkPlane(){
// Specific implementations for HighFlyer plane to park
}
public void servicePlane(){
// specific implementatoins for HighFlyer plane to service.
}
}
Agora pense em suas classes de controlador usando AirPlanevárias vezes,
Suponha que sua classe Controller seja ControlPlane, como abaixo,
public Class ControlPlane{
AirPlane plane;
// so much method with AirPlane reference are used here...
}
Aí vem a mágica, pois você pode fazer com que suas novas AirPlaneinstâncias de tipo sejam quantas quiser e não está alterando o código deControlPlane classe.
Você pode adicionar uma instância ...
JumboJetPlane // implementing AirPlane interface.
AirBus // implementing AirPlane interface.
Você também pode remover instâncias de tipos criados anteriormente.