короткая история: почтальона просят пойти домой домой и получить обложки (письма, документы, чеки, подарочную карту, заявление, любовный бюллетень) с адресом, написанным на нем для доставки.
Предположим, что нет прикрытия и попросить почтальона пойти домой домой, получить все вещи и доставить другому человеку, которого почтальон может запутать,
так лучше
оберните его крышкой (в нашей истории это интерфейс), тогда он отлично выполнит свою работу.
Теперь работа почтальона состоит в том, чтобы получать и доставлять только обложки ... (он не беспокоился о том, что находится внутри обложки).
Создать тип interface
не фактический тип, но реализовать с фактическим типом.
Создание интерфейса означает, что ваши компоненты получают Легко вписывается в остальную часть кода
Я приведу вам пример.
у вас есть интерфейс AirPlane, как показано ниже.
interface Airplane{
parkPlane();
servicePlane();
}
Предположим, у вас есть методы в вашем классе контроллеров, такие как
parkPlane(Airplane plane)
и
servicePlane(Airplane plane)
реализовано в вашей программе. Это не будет BREAK ваш код.
Я имею в виду, что его не нужно менять, если он принимает аргументы как AirPlane
.
Потому что он примет любой Самолет, несмотря на фактический тип, flyer
, highflyr
, fighter
и т. Д.
Также в коллекции:
List<Airplane> plane;
// Принимает все ваши самолеты.
Следующий пример очистит ваше понимание.
У вас есть истребитель, который его реализует, поэтому
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.
}
}
То же самое для HighFlyer и других предметов:
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.
}
}
Теперь подумайте, что классы вашего контроллера используют AirPlane
несколько раз,
Предположим, ваш класс Controller - это ControlPlane, как показано ниже,
public Class ControlPlane{
AirPlane plane;
// so much method with AirPlane reference are used here...
}
здесь магия приходит как
вы можете создавать новые экземпляры AirPlane
столько раз, сколько хотите, и вы не меняете
код ControlPlane
класса.
Вы можете добавить экземпляр ..
JumboJetPlane // implementing AirPlane interface.
AirBus // implementing AirPlane interface.
вы также можете удалять экземпляры .. ранее созданных типов.