简短故事:一位邮递员被要求去家里收取包含(信件、文件、支票、礼品卡、申请书、情书)地址写在上面的封套并投递。
假设没有封套,要求邮递员挨家挨户地收取所有物品并交给其他人,邮递员可能会感到困惑。
因此最好用封套(在我们的故事中是接口)将其包装起来,然后他就能很好地完成工作了。
现在邮递员的工作仅限于收取和投递封套(他不会关心封套内部的内容)。
创建一种类型的接口,不是实际类型,但使用实际类型进行实现。
创建接口意味着您的组件可以轻松地适应其他代码。
我给你举个例子。
您有以下AirPlane接口。
interface Airplane{
parkPlane();
servicePlane();
}
假设您的控制器类中有关于飞机的方法,例如:
parkPlane(Airplane plane)
并且
servicePlane(Airplane plane)
您可以在程序中实现它。这不会破坏您的代码。
我的意思是,只要接受AirPlane
作为参数,就不需要进行更改。
因为它将接受任何类型的飞机,如flyer
,highflyr
,fighter
等。
此外,在集合中:
List<Airplane> plane;
// 将接受您所有的飞机。
下面的示例将清楚地说明这一点。
您有一架战斗机实现了它,所以
public class Fighter implements Airplane {
public void parkPlane(){
}
public void servicePlane(){
}
}
同样适用于HighFlyer和其他类:
public class HighFlyer implements Airplane {
public void parkPlane(){
}
public void servicePlane(){
}
}
现在考虑使用 AirPlane
多次的控制器类,
假设你的控制器类名为 ControlPlane,如下所示,
public Class ControlPlane{
AirPlane plane;
}
在这里,神奇的地方出现了。您可以根据需要创建任意数量的新AirPlane
类型实例,而不必更改ControlPlane
类的代码。
您可以添加一个实例...
JumboJetPlane // implementing AirPlane interface.
AirBus // implementing AirPlane interface.
您可以删除之前创建的类型实例。