设计模式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 自行上传分享,仅供网友学习交流。所有权归原作者,若您的权利被侵害,请联系管理员。
转载本站原创文章,请注明出处,并保留原始链接、图片水印。
本站是一个以用户分享为主的开源技术平台,欢迎各类分享!