Chinaunix首页 | 论坛 | 博客
  • 博客访问: 170218
  • 博文数量: 60
  • 博客积分: 15
  • 博客等级: 民兵
  • 技术积分: 638
  • 用 户 组: 普通用户
  • 注册时间: 2010-11-26 10:59
个人简介

喜欢coding,因为那是一件伟大的事情,是将无生命的IC赋予灵魂的过程,让我拥有了和上帝一样的成就感。(w1c2g3@163.com)

文章分类

全部博文(60)

文章存档

2017年(7)

2016年(41)

2015年(1)

2014年(4)

2013年(7)

我的朋友

分类: C/C++

2016-10-30 22:54:38

模板方法模式 在一个方法中定义一个算法的骨架,而将一些步骤延迟到子类中。模板方法使得子类可以在不改变算法结构的情况下,重新定义算法中的某些步骤。




  1. #include <iostream>
  2. #include <string>

  3. using namespace std;

  4. struct CaffeineBeverage {
  5. public:
  6.     prepareRecipe() {
  7.         boilWater();
  8.         brew();
  9.         pourInCup();
  10.         addCondiments();
  11.         hook();
  12.     }
  13.     virtual brew() = 0;
  14.     virtual addCondiments() = 0;
  15.     boilWater() {
  16.         cout << "boilWater" << endl;
  17.     }
  18.     pourInCup() {
  19.         cout << "pourInCup" << endl;
  20.     }
  21.     virtual hook() {}
  22. };

  23. struct Tea : public CaffeineBeverage {
  24. public:
  25.     virtual brew() {
  26.         cout << "Tea: brew" << endl;
  27.     }
  28.     virtual addCondiments() {
  29.         cout << "Tea: addCondiments" << endl;
  30.     }
  31. };

  32. struct Coff : public CaffeineBeverage {
  33.     virtual brew() {
  34.         cout << "Coff: brew" << endl;
  35.     }
  36.     virtual addCondiments() {
  37.         cout << "Coff: addCondiments" << endl;
  38.     }
  39.     virtual hook() {
  40.         cout << "Coff: hook service" << endl;
  41.     }
  42. };


  43. int main(int argc, char **argv)
  44. {
  45.     Tea *myTea = new Tea();
  46.     myTea->prepareRecipe();
  47.     delete myTea;

  48.     Coff *myCoff = new Coff();
  49.     myCoff->prepareRecipe();
  50.     delete myCoff;

  51.     return 0;
  52. }

阅读(642) | 评论(0) | 转发(0) |
0

上一篇:外观模式

下一篇:迭代器模式

给主人留下些什么吧!~~