在大学时候接触过工厂模式,一直都是很模糊的概念,直到工作之后才真正了解工厂模式的好处和精髓,在此分享一下。
工厂模式是建立在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 << "能力:大玉螺旋丸";
}
}
我一惊,这小子天分不错,以后会不会抢了老子的风头?!
我端起他的脸仔细端详了一下,这小子着实长得端庄,可是和我比起来可是差了十万八千丈!我们的样子是不同的!我长得非常帅(基类方法),他长得一般!(派生类方法),而且我更高(基类方法),他矮(派生类方法)。
用外星语说就是:

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

被折叠的 条评论
为什么被折叠?



