大话设计模式——模板方法模式(C++点菜实现)
来源:互联网 发布:http协议传输数据 编辑:程序博客网 时间:2024/05/21 07:55
模板方法模式是把不变的代码移到超类中,去除子类中的重复代码。 只把动态改变的地方交给子类多态去实现。
代码如下,基类是固定的菜谱,子类实现了A和B各点多少份菜。 A B不关心菜谱有什么,只关心自己应该点多少份。
class Menu{public:Menu();~Menu();void OrderPork(){std::cout << "红烧肉:" << getPorkNum() << "份" << std::endl;}void OrderPotato(){std::cout << "土豆泥:" << getPotatoNum() << "份" << std::endl;}void OrderFish(){std::cout << "水煮鱼:" << getFishNum() << "份" << std::endl;}virtual int getPorkNum(){return 0;}virtual int getPotatoNum(){return 0;}virtual int getFishNum(){return 0;}};
#include "Menu.h"class MenuPersonA :public Menu{public:MenuPersonA();~MenuPersonA(); int getPorkNum (){return 3;}int getPotatoNum (){return 4;} int getFishNum(){return 5;}};
#include "Menu.h"class MenuPersonB :public Menu{public:MenuPersonB();~MenuPersonB();int getPorkNum() override{return 4;} int getPotatoNum()override{return 1;} int getFishNum()override{return 2;}};
客户端调用:
int _tmain(int argc, _TCHAR* argv[]){Menu *PersonA = new MenuPersonA();Menu *PersonB = new MenuPersonB();PersonA->OrderFish();PersonA->OrderPork();PersonA->OrderPotato();PersonB->OrderFish();PersonB->OrderPork();PersonB->OrderPotato();delete PersonA;delete PersonB;return 0;}
0 0
- 大话设计模式——模板方法模式(C++点菜实现)
- 大话设计模式—模板方法模式
- 大话设计模式——模板方法(TemplateMethod)
- 【大话设计模式】—— 模板方法模式
- 大话设计模式 模板方法
- 大话设计模式--模板方法模式 TemplateMethod -- C++ 实现
- 《大话设计模式》—— 读后感 (10)考题抄错会做也白搭——模板方法模式
- 大话设计模式学习(八)——模板方法模式
- 大话设计模式_模板方法模式
- 《大话设计模式》-- 9.模板方法模式
- 大话设计模式之模板方法模式
- linkin大话设计模式--模板方法模式
- 大话设计模式-模板方法模式
- 大话设计模式-模板方法模式
- 大话设计模式-模板方法模式
- 大话设计模式10----模板方法模式
- 大话设计模式----模板方法模式
- 《大话设计模式》之模板方法模式
- IOS之使用CKCalendar做datePicker
- Activity的四种启动模式
- C++学习笔记6--高级强制类型转换 命名空间和模块化编程 C预处理器 链接和作用域 函数模板 类模板 内联模板 容器和算法
- vmstat 详细说明
- 解决jsp中的中文乱码问题笔记
- 大话设计模式——模板方法模式(C++点菜实现)
- 出现异常 child->m_pParent == 0
- Android广播的注册方式
- All of the previous
- 班上一个哥们java脑残的笔试题1,2,3,4等于12可以重复3分钟答出来
- vmstat 详细说明2
- 电子星球
- windows 7设置wifi热点
- 统计文件的行数