C++状态模式
2023-09-14 09:12:42 时间
制作茶和制作咖啡的流程,是相似的,把相似部分提取出来,作为模板。下次做其他类似的直接使用模板,这就是模板思维。思路很简单,直接看代码。
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)协议新动向
偶尔分享下程序员梦呓碎碎念(๑•॒̀ ູ॒•́๑)啦啦啦
目前刚刚开通,接受读者的优质投稿…
鉴于国内音视频圈子小,起步晚,以致分享少,门槛高,特开通分享,一起扇动这阵风吧!
微信扫描下方二维码,关注公众号,赶快进入音视频开发者社区吧!
相关文章
- C++异常处理机制(throw、try、catch、finally)
- C++-标准C++中的string类的用法总结
- VC++检测硬件设备状态
- ios开发,app调用资源文件到C++的方法
- C++ 调用Python脚本
- paip.c++ qt messagebox用法
- Algorithm:C++语言实现之动态规划算法相关(矩阵连乘状态转移方程、字符串的交替连接、分析格网棋盘的特点、最短路线问题、生产计划问题、动态规划解下列非线性规划)
- C++设计模式:桥接模式
- VS中c++文件调用c 函数 ,fatal error C1853 预编译头文件来自编译器的早期版本号,或者预编译头为 C++ 而在 C 中使用它(或相反)
- c语言/c++实现牛顿迭代法求解一元二次方程的两个根
- C++设计模式——状态模式(State)
- C++装饰者模式
- C++状态模式
- C/C++数据对齐汇总
- electron 加载C++扩展 调用 用C++扩展Electron(node-ffi版)
- C++之找不到libboost_system.so.1.76库解决(八十七)
- C++函数与java函数菜鸟级的对比理解
- 【跟学C++】C++类与对象—构造函数—析构函数(Study10)
- 深入C/C++之基于CheckStackVars的安全检查(VS2008)