Breve historia: se le pide a un cartero que vaya a casa después de casa y reciba las portadas que contiene (cartas, documentos, cheques, tarjetas de regalo, solicitud, carta de amor) con la dirección escrita para entregar.
Suponga que no hay cobertura y pídale al cartero que se vaya a casa después de casa y reciba todas las cosas y se las entregue a otras personas, el cartero puede confundirse.
Así que mejor envuélvelo con tapa (en nuestra historia es la interfaz), entonces él hará su trabajo bien.
Ahora, el trabajo del cartero es recibir y entregar las portadas únicamente (no le molestaría lo que hay dentro de la portada).
Cree un tipo de tipo interface
no real, pero impleméntelo con el tipo real.
Crear para la interfaz significa que sus componentes se ajustan fácilmente al resto del código
Te doy un ejemplo.
tiene la interfaz AirPlane como se muestra a continuación.
interface Airplane{
parkPlane();
servicePlane();
}
Supongamos que tiene métodos en su clase de Controlador de Planos como
parkPlane(Airplane plane)
y
servicePlane(Airplane plane)
implementado en su programa. No romperá su código. Quiero decir, no necesita cambiar mientras acepte argumentos como AirPlane
.
Debido a que aceptará cualquier avión a pesar de tipo real, flyer
, highflyr
, fighter
, etc.
Además, en una colección:
List<Airplane> plane;
// Tomará todos tus aviones.
El siguiente ejemplo aclarará su comprensión.
Tienes un avión de combate que lo implementa, así que
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.
}
}
Lo mismo para HighFlyer y otras clases:
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.
}
}
Ahora piense que sus clases de controlador usan AirPlane
varias veces,
Supongamos que su clase de controlador es ControlPlane como a continuación,
public Class ControlPlane{
AirPlane plane;
// so much method with AirPlane reference are used here...
}
Aquí viene la magia, ya que puede hacer que sus nuevas AirPlane
instancias de tipo sean tantas como desee y no está cambiando el código de ControlPlane
clase.
Puedes agregar una instancia ...
JumboJetPlane // implementing AirPlane interface.
AirBus // implementing AirPlane interface.
También puede eliminar instancias de tipos creados previamente.