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 interface
nã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 AirPlane
vá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 AirPlane
instâ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.