Рассказ: почтальона просят вернуться домой домой и получить обложки (письма, документы, чеки, подарочные карты, приложения, любовью) с адресом, написанным на нем для доставки.
Предположим, что есть нет обложки и попросите человека повести домой домой и получить все вещи и доставить другому человеку почтальон может запутаться,
, так что лучше оберните его обложкой (в нашей истории это интерфейс), тогда он
Теперь почтальон должен получать и доставлять только обложки .. (он не беспокоился о том, что внутри обложки).
Создайте тип interface
не действительный тип, но реализуется с фактическим типом.
Создать для интерфейса означает, что ваши компоненты легко вставляются в остальную часть кода
Я приведу вам пример.
у вас есть интерфейс AirPlane, как показано ниже.
interface Airplane{
parkPlane();
servicePlane();
}
Предположим, что у вас есть методы в вашем классе контроллеров Planes, например
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.
вы также можете удалить экземпляры ранее созданных типов.