Racconto: a un postino viene chiesto di tornare a casa dopo casa e di ricevere le copertine contenenti (lettere, documenti, assegni, carte regalo, domanda, lettera d'amore) con l'indirizzo scritto su di esso da consegnare.
Supponiamo che non ci sia copertura e chieda al postino di tornare a casa dopo casa e ricevere tutte le cose e consegnare ad altre persone, il postino può confondersi.
Quindi meglio avvolgerlo con la copertina (nella nostra storia è l'interfaccia) quindi farà bene il suo lavoro.
Ora il compito del postino è ricevere e consegnare solo le copertine (non si preoccuperebbe di cosa ci sia dentro la copertina).
Crea un tipo di interface
non reale, ma implementalo con il tipo effettivo.
Creare un'interfaccia significa ottenere i componenti adattano facilmente al resto del codice
Ti faccio un esempio.
hai l'interfaccia AirPlane come di seguito.
interface Airplane{
parkPlane();
servicePlane();
}
Supponiamo di avere metodi simili nella tua classe di piani Controller
parkPlane(Airplane plane)
e
servicePlane(Airplane plane)
implementato nel tuo programma. Non interromperà il tuo codice. Voglio dire, non deve cambiare finché accetta argomenti comeAirPlane
.
Perché sarà accettare qualsiasi aeroplano nonostante tipo effettivo, flyer
, highflyr
,fighter
, etc.
Inoltre, in una raccolta:
List<Airplane> plane;
// Prenderà tutti i tuoi aerei.
L'esempio seguente chiarirà la tua comprensione.
Hai un aereo da combattimento che lo implementa, quindi
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 stessa cosa per HighFlyer e altri 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.
}
}
Ora pensa che le tue classi di controller utilizzino AirPlane
più volte,
Supponiamo che la tua classe Controller sia ControlPlane come di seguito,
public Class ControlPlane{
AirPlane plane;
// so much method with AirPlane reference are used here...
}
Qui la magia arriva quando puoi rendere le tue nuove AirPlane
istanze di tipo quante ne vuoi e non stai cambiando il codice di ControlPlane
classe.
Puoi aggiungere un'istanza ...
JumboJetPlane // implementing AirPlane interface.
AirBus // implementing AirPlane interface.
È possibile rimuovere anche istanze di tipi precedentemente creati.