短篇小说:要求邮递员一个个回家,然后收到包含其上写明地址的封套(信件,文件,支票,礼品卡,申请书,情书)。
假设没有掩护,请邮递员回家后收拾所有东西并交付给其他人,邮递员会感到困惑。
因此,最好将它包裹起来(在我们的故事中,它是界面),然后他会做得很好。
现在,邮递员的工作是仅接收和交付封面(他不会打扰封面中的内容)。
创建一种 interface
非实际类型的类型,但以实际类型实现它。
创建接口意味着您的组件可以轻松适应其余代码
我举一个例子。
您具有如下的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(){
// 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.
您也可以删除以前创建的类型的实例。