| 注册
请输入搜索内容

热门搜索

Java Linux MySQL PHP JavaScript Hibernate jQuery Nginx
y35w
9年前发布

设计模式C++ : 模板方法模式

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

我的C++代码:

h:

#ifndef DESIGN_TEMPLATE_H_  #define DESIGN_TEMPLATE_H_  namespace templated{  class CaffeineBeverage  {  public:    void prepareRecipe();    void boilWater();    void pourInCup();  public:    virtual void brew() = 0;    virtual void addCondiments() = 0;  };  class Tea : public CaffeineBeverage  {  public:    virtual void brew();    virtual void addCondiments();  };  class Coffee : public CaffeineBeverage  {  public:    virtual void brew();    virtual void addCondiments();  };  }  #endif // DESIGN_TEMPLATE_H_

cpp:
#include "template.h"  #include <iostream>  using namespace templated;  void CaffeineBeverage::prepareRecipe()  {    boilWater();    brew();    pourInCup();    addCondiments();  }  void CaffeineBeverage::boilWater()  {    std::cout << "boil water!" << std::endl;  }  void CaffeineBeverage::pourInCup()  {    std::cout << "pour in cup!" << std::endl;  }  void Tea::brew()  {    std::cout << "tea brew!" << std::endl;  }  void Tea::addCondiments()  {    std::cout << "tea add condiments!" << std::endl;  }  void Coffee::brew()  {    std::cout << "coffee brew!" << std::endl;  }  void Coffee::addCondiments()  {    std::cout << "coffee add condiments!" << std::endl;  }

原文 http://www.ituring.com.cn/article/200355

 本文由用户 y35w 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
 转载本站原创文章,请注明出处,并保留原始链接、图片水印。
 本站是一个以用户分享为主的开源技术平台,欢迎各类分享!
 本文地址:https://www.open-open.com/lib/view/open1436425196661.html
C/C++开发 C/C++