Petite histoire: Un facteur est prié de rentrer chez lui après la maison et de recevoir les couvertures (lettres, documents, chèques, cartes-cadeaux, application, lettre d'amour) avec l'adresse écrite dessus pour la livraison.
Supposons qu'il n'y ait pas de couverture et demandez au facteur de rentrer chez lui après la maison et de recevoir toutes les choses et de livrer à d'autres personnes, le facteur peut devenir confus.
Il vaut donc mieux l'envelopper avec une couverture (dans notre histoire, c'est l'interface), alors il fera bien son travail.
Maintenant, le travail du facteur est de recevoir et de livrer les couvertures uniquement (il ne dérangerait pas ce qu'il y a à l'intérieur de la couverture).
Créez un type de type interface
non réel, mais implémentez-le avec le type réel.
Créer à l'interface signifie que vos composants s'intègrent facilement dans le reste du code
Je vous donne un exemple.
vous avez l'interface AirPlane comme ci-dessous.
interface Airplane{
parkPlane();
servicePlane();
}
Supposons que vous ayez des méthodes dans votre classe de contrôleur comme
parkPlane(Airplane plane)
et
servicePlane(Airplane plane)
mis en œuvre dans votre programme. Cela ne cassera pas votre code. Je veux dire, il n'a pas besoin de changer tant qu'il accepte les arguments AirPlane
.
Parce qu'il acceptera tout avion malgré type réel, flyer
, highflyr
, fighter
, etc.
Aussi, dans une collection:
List<Airplane> plane;
// Prendra tous vos avions.
L'exemple suivant clarifiera votre compréhension.
Vous avez un avion de chasse qui le met en œuvre, donc
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.
}
}
La même chose pour HighFlyer et autres clasess:
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.
}
}
Pensez maintenant à vos classes de contrôleur en utilisant AirPlane
plusieurs fois,
Supposons que votre classe Controller soit ControlPlane comme ci-dessous,
public Class ControlPlane{
AirPlane plane;
// so much method with AirPlane reference are used here...
}
Ici, la magie vient car vous pouvez créer AirPlane
autant d'instances que vous le souhaitez et vous ne changez pas le code de la ControlPlane
classe.
Vous pouvez ajouter une instance ...
JumboJetPlane // implementing AirPlane interface.
AirBus // implementing AirPlane interface.
Vous pouvez également supprimer des instances de types créés précédemment.