C++多态工厂模式一步到位

本文通过故事介绍了C++中的多态概念,包括编译时和运行时多态,并通过一个生动的例子解释了多态的实现。接着,作者以工厂模式为例,讲解了如何在C++中运用多态,揭示了工厂模式的精髓,即通过接口延迟对象实例化,灵活应对不同场景。文章旨在用通俗易懂的方式帮助初学者理解这两种重要的设计模式。

在大学时候接触过工厂模式,一直都是很模糊的概念,直到工作之后才真正了解工厂模式的好处和精髓,在此分享一下。

工厂模式是建立在C++多态的基础上实现的,首先解释一下多态。

C++多态

先来定义。

多态分为:

1.编译时多态性(静态多态):通过重载函数实现:先期联编 early binding

2.运行时多态性(动态多态):通过虚函数实现 :滞后联编 late binding

接下来说人话,首先解释一下多态是什么意思,按照中华博大精深的汉字解释,就是多种形态,根据你调用了什么对象,使用同一个接口名字执行不同的函数,所以多态都是通过继承实现的。

还是不明白我就跟你讲个故事,假如有一天,我女朋友突然带着一个小孩子跟我说,这是你的儿子小明(派生类),我(基类)虽然一脸懵逼,但是我还是接受了这个事实,因为你看他和我多像,我有手,小明也有手。

我可以用手搓螺旋丸手(基类方法),小明通过继承我的能力,他也可以用手搓螺旋丸(派生类方法),只不过有点不同的是,小明经过自己的努力(使用多态),在我的基础之上,实现了搓大螺旋丸!也就是说,即使小明不努力,也能得到我搓螺旋丸的能力(继承),但是他也可以加一把劲搓个大螺旋丸!

小明这时抬起头,用雪亮的眼睛看着我问道:“我要怎样才能搓大螺旋丸呢?”

我毫不犹豫的跟他说:

class Wo
{
   
   
public:
    virtual void NengLi()
    {
   
   
        //用手搓啊
        cout << "能力:螺旋丸";
    }
}

class Xiaoming : public Wo
{
   
   
public:
    //此处virtual可写可不写,但最好写
    //这就是运行时多态,同时也是重写虚函数
    virtual void NengLi()
    {
   
   
        //小明说
        //那我两个人一起搓呢?
        cout << "能力:大玉螺旋丸";
    }
}

我一惊,这小子天分不错,以后会不会抢了老子的风头?!

我端起他的脸仔细端详了一下,这小子着实长得端庄,可是和我比起来可是差了十万八千丈!我们的样子是不同的!我长得非常帅(基类方法),他长得一般!(派生类方法),而且我更高(基类方法),他矮(派生类方法)。

用外星语说就是:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值