多态(Polymorphism)按字面的意思就是“多种状态”。
在面向对象语言中,接口的多种不同的实现方式即为多态。
比如:
某系统对接了3个配送的平台,分别是平台A、平台B、平台C
对于上层业务来说,只要把自己的订单(这部分属性固定)对象作为参数,以及要配送的平台,比如平台A拿过来调用接口就行了
以后可能会增加平台D,在不修改接口的情况下,哪个设计模式可以做到灵活扩展的?
现在能想到的是,根据这个类型,调用不同的平台,接口内写了很多
if(type==A_CODE){
//调用平台A的下单接口}
else if(type==B_CODE){
// 调用平台B的下单接口
}else if(type==C_CODE){
//调用平台C的下单接口
}
简单的说,就是一句话:允许将子类类型的指针赋值给父类类型的指针。多态性在Object Pascal和C++中都是通过虚函数实现的。
C++中,实现多态有以下方法:虚函数,抽象类,覆盖,模板(重载和多态无关)。
class A
{
public:
A(){}
virtual void foo()
{
cout<<"This is A."<<endl;
}
};
class B: public A
{
public:
B(){}
void foo()
{
cout<<"This is B."<<endl;
}
};
int main(int argc, char *argv[])
{
A *a = new B();
a->foo();
if(a != NULL)
delete a;
return 0;
}
微信公众号“计算机基础学”关注我哟