制作茶和制作咖啡的流程,是相似的,把相似部分提取出来,作为模板。下次做其他类似的直接使用模板,这就是模板思维。思路很简单,直接看代码。
makefile文件。
Exe : Template.o
g++ -o Exe Template.o
main.o : Template.cpp
g++ -c -g Template.cpp
rm :
Template.o
#include <iostream>
#include <string>
using namespace std;
//模板方法
class Template
{
public:
//找好水
virtual void find_water() = 0;
//煮水
virtual void boil_water() = 0;
//放入杯中
virtual void pour_in_cup() = 0;
//加作料
virtual void add_Seasoning() = 0;
//流程
void make();
};
void Template::make()
{
find_water();
boil_water();
pour_in_cup();
add_Seasoning();
}
class MakeTea : public Template
{
public:
//找好水
void find_water();
//煮水
void boil_water();
//放入杯中
void pour_in_cup();
//加作料
void add_Seasoning();
};
void MakeTea::find_water()
{
cout << "water for tea" << endl;
}
void MakeTea::boil_water()
{
cout << "boil water for tea" << endl;
}
void MakeTea::pour_in_cup()
{
cout << "pour water in cup for tea" << endl;
}
void MakeTea::add_Seasoning()
{
cout << "add seasoning in water for tea" << endl;
}
class MakeCoffee : public Template
{
public:
//找好水
void find_water();
//煮水
void boil_water();
//放入杯中
void pour_in_cup();
//加作料
void add_Seasoning();
};
void MakeCoffee::find_water()
{
cout << "water for Coffee" << endl;
}
void MakeCoffee::boil_water()
{
cout << "boil water for Coffee" << endl;
}
void MakeCoffee::pour_in_cup()
{
cout << "pour water in cup for Coffee" << endl;
}
void MakeCoffee::add_Seasoning()
{
cout << "add seasoning in water for Coffee" << endl;
}
int main(void)
{
MakeTea* p_MakeTea = new MakeTea;
p_MakeTea->make();
MakeCoffee* p_MakeCoffer = new MakeCoffee;
p_MakeCoffer->make();
delete p_MakeTea;
delete p_MakeCoffer;
return 0;
}
哎呦喂ヾ(✿゚▽゚)ノ~路长馆小,雪轻帘薄,酒热乎,这位爷~您ヾ(✿゚▽゚)ノ~ 里面坐~
本公众号专注分享C++,ffmpeg,opencv等相关音视频知识
webrtc,udp,tcp,rtsp,rtmp,srt/nginx+rtmp等流媒体协议和服务器
同时也会有大厂音视频技术专家不定期直播分享…
国人开发流媒体srs服务器,及yangrtc(国人版的webrtc)协议新动向
偶尔分享下程序员梦呓碎碎念(๑•॒̀ ູ॒•́๑)啦啦啦
目前刚刚开通,接受读者的优质投稿…
鉴于国内音视频圈子小,起步晚,以致分享少,门槛高,特开通分享,一起扇动这阵风吧!
微信扫描下方二维码,关注公众号,赶快进入音视频开发者社区吧!
![](https://img-blog.csdnimg.cn/32ebb60e13f9449496052c247d2ccf65.png)
![](https://img-blog.csdnimg.cn/bfd8a35f631f44059d8d1d228a22d54b.jpg)
![](https://img-blog.csdnimg.cn/1b3e3fc19f5f4837a6514769eabf4e10.png)