【C++】面向对象的多态,接口的多种不同的实现方式

多态(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;
}

微信公众号“计算机基础学”关注我哟

发布了57 篇原创文章 · 获赞 13 · 访问量 3173

猜你喜欢

转载自blog.csdn.net/qq_41985559/article/details/102096751